#ifndef MOBIES_GOAL_H
#define MOBIES_GOAL_H
// header file GOAL.h generated from diagram GOAL
// generated on Thu Dec 04 05:31:22 2008

#ifndef MOBIES_UDMBASE_H
#include "UdmBase.h"
#endif

#ifdef min
#undef min
#endif

#ifdef max
#undef max
#endif
namespace GOAL {
	extern  Udm::UdmDiagram diagram;
	 void Initialize(const ::Uml::Diagram &dgr);
	 void Initialize();

		class  VariableRef;
		class  VariableRef_RefersTo_Base;
		class  UnaryOperator;
		class  BinaryOperator;
		class  Plus;
		class  Divide;
		class  Times;
		class  Minus;
		class  Modulus;
		class  Function;
		class  Adapter;
		class  CommonConnection;
		class  RightHandSideObject;
		class  FunctionCall;
		class  Class;
		class  Module;
		class  CodeAdapter;
		class  ModuleAdapter;
		class  ClassAdapter;
		class  Not;
		class  ConditionsAdapter;
		class  InfixOperators;
		class  Assignment;
		class  File;
		class  Console;
		class  Keyboard;
		class  AssignmentConnection;
		class  ConstBase;
		class  ComposableBase;
		class  Brackets;
		class  IOBase;
		class  Output;
		class  Input;
		class  IndexOperator;
		class  IndexConnection;
		class  NonModifyingConnection;
		class  For;
		class  While;
		class  If;
		class  InputOutput;
		class  PlusEquals;
		class  DivideEquals;
		class  MinusEquals;
		class  TimesEquals;
		class  AccumulatorBase;
		class  Increment;
		class  Decrement;
		class  BooleanOperators;
		class  And;
		class  Or;
		class  OutputConnection;
		class  ArrayAssignmentConnection;
		class  AssignmentRHSConnection;
		class  ArgumentConnection;
		class  ControlBase;
		class  Array;
		class  Return;
		class  Argument;
		class  Const;
		class  VariableBase;
		class  ClassMember;
		class  ClassRef;
		class  Variable;
		class  RootFolder;
		class  MgaObject;


		class  Visitor : public Udm::BaseVisitor 
		{
		public:
			virtual void Visit_VariableRef(const VariableRef&){};
			virtual void Visit_Plus(const Plus&){};
			virtual void Visit_Divide(const Divide&){};
			virtual void Visit_Times(const Times&){};
			virtual void Visit_Minus(const Minus&){};
			virtual void Visit_Modulus(const Modulus&){};
			virtual void Visit_Function(const Function&){};
			virtual void Visit_FunctionCall(const FunctionCall&){};
			virtual void Visit_Class(const Class&){};
			virtual void Visit_Module(const Module&){};
			virtual void Visit_CodeAdapter(const CodeAdapter&){};
			virtual void Visit_ModuleAdapter(const ModuleAdapter&){};
			virtual void Visit_ClassAdapter(const ClassAdapter&){};
			virtual void Visit_Not(const Not&){};
			virtual void Visit_ConditionsAdapter(const ConditionsAdapter&){};
			virtual void Visit_Assignment(const Assignment&){};
			virtual void Visit_File(const File&){};
			virtual void Visit_Console(const Console&){};
			virtual void Visit_Keyboard(const Keyboard&){};
			virtual void Visit_AssignmentConnection(const AssignmentConnection&){};
			virtual void Visit_Brackets(const Brackets&){};
			virtual void Visit_IndexConnection(const IndexConnection&){};
			virtual void Visit_NonModifyingConnection(const NonModifyingConnection&){};
			virtual void Visit_For(const For&){};
			virtual void Visit_While(const While&){};
			virtual void Visit_If(const If&){};
			virtual void Visit_PlusEquals(const PlusEquals&){};
			virtual void Visit_DivideEquals(const DivideEquals&){};
			virtual void Visit_MinusEquals(const MinusEquals&){};
			virtual void Visit_TimesEquals(const TimesEquals&){};
			virtual void Visit_Increment(const Increment&){};
			virtual void Visit_Decrement(const Decrement&){};
			virtual void Visit_And(const And&){};
			virtual void Visit_Or(const Or&){};
			virtual void Visit_OutputConnection(const OutputConnection&){};
			virtual void Visit_ArrayAssignmentConnection(const ArrayAssignmentConnection&){};
			virtual void Visit_AssignmentRHSConnection(const AssignmentRHSConnection&){};
			virtual void Visit_ArgumentConnection(const ArgumentConnection&){};
			virtual void Visit_Array(const Array&){};
			virtual void Visit_Return(const Return&){};
			virtual void Visit_Argument(const Argument&){};
			virtual void Visit_Const(const Const&){};
			virtual void Visit_ClassMember(const ClassMember&){};
			virtual void Visit_ClassRef(const ClassRef&){};
			virtual void Visit_Variable(const Variable&){};
			virtual void Visit_RootFolder(const RootFolder&){};
			virtual void Visit_Object(const Udm::Object&){};
			virtual ~Visitor(){};
		};

		 void CreateMetaObjs();
		 void InitCrossNSInheritence();
		 void InitCrossNSCompositions();
		 void InitCrossNSAssociations();
		class  VariableRef_RefersTo_Base :  virtual public Udm::Object {
		public:
			static ::Uml::Class meta;

			VariableRef_RefersTo_Base() { }
			VariableRef_RefersTo_Base(Udm::ObjectImpl *impl) : UDM_OBJECT(impl) { }
			VariableRef_RefersTo_Base(const VariableRef_RefersTo_Base &master) : UDM_OBJECT(master) { }
			static VariableRef_RefersTo_Base Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static VariableRef_RefersTo_Base Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			VariableRef_RefersTo_Base CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			VariableRef_RefersTo_Base CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::VariableRef_RefersTo_Base> Instances() { return Udm::InstantiatedAttr< ::GOAL::VariableRef_RefersTo_Base>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::VariableRef_RefersTo_Base, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::VariableRef_RefersTo_Base, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::VariableRef_RefersTo_Base> Derived() { return Udm::DerivedAttr< ::GOAL::VariableRef_RefersTo_Base>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::VariableRef_RefersTo_Base, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::VariableRef_RefersTo_Base, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::VariableRef_RefersTo_Base> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::VariableRef_RefersTo_Base>(impl);}

			static ::Uml::AssociationRole meta_referedbyVariableRef;
			Udm::AssocAttr< ::GOAL::VariableRef> referedbyVariableRef() const { return Udm::AssocAttr< ::GOAL::VariableRef>(impl, meta_referedbyVariableRef); }
			template <class Pred> Udm::AssocAttr< ::GOAL::VariableRef, Pred > referedbyVariableRef_sorted(const Pred &) const { return Udm::AssocAttr< ::GOAL::VariableRef, Pred>(impl, meta_referedbyVariableRef); }

			Udm::ParentAttr<Udm::Object> parent() const { return Udm::ParentAttr<Udm::Object>(impl, Udm::NULLPARENTROLE); }
		};

		class  RootFolder :  public Udm::Object {
		public:
			static ::Uml::Class meta;

			RootFolder() { }
			RootFolder(Udm::ObjectImpl *impl) : UDM_OBJECT(impl) { }
			RootFolder(const RootFolder &master) : UDM_OBJECT(master) { }
			static RootFolder Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static RootFolder Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			RootFolder CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			RootFolder CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::RootFolder> Instances() { return Udm::InstantiatedAttr< ::GOAL::RootFolder>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::RootFolder, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::RootFolder, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::RootFolder> Derived() { return Udm::DerivedAttr< ::GOAL::RootFolder>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::RootFolder, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::RootFolder, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::RootFolder> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::RootFolder>(impl);}

			static ::Uml::Attribute meta_name;
			Udm::StringAttr name() const { return Udm::StringAttr(impl, meta_name); }

			static ::Uml::CompositionChildRole meta_ModuleAdapter_children;
			Udm::ChildrenAttr< ::GOAL::ModuleAdapter> ModuleAdapter_children() const { return Udm::ChildrenAttr< ::GOAL::ModuleAdapter>(impl, meta_ModuleAdapter_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::ModuleAdapter, Pred> ModuleAdapter_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ModuleAdapter, Pred>(impl, meta_ModuleAdapter_children); }

			static ::Uml::CompositionChildRole meta_CodeAdapter_children;
			Udm::ChildrenAttr< ::GOAL::CodeAdapter> CodeAdapter_children() const { return Udm::ChildrenAttr< ::GOAL::CodeAdapter>(impl, meta_CodeAdapter_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::CodeAdapter, Pred> CodeAdapter_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::CodeAdapter, Pred>(impl, meta_CodeAdapter_children); }

			static ::Uml::CompositionChildRole meta_ClassAdapter_children;
			Udm::ChildrenAttr< ::GOAL::ClassAdapter> ClassAdapter_children() const { return Udm::ChildrenAttr< ::GOAL::ClassAdapter>(impl, meta_ClassAdapter_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::ClassAdapter, Pred> ClassAdapter_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ClassAdapter, Pred>(impl, meta_ClassAdapter_children); }

			static ::Uml::CompositionChildRole meta_ConditionsAdapter_children;
			Udm::ChildrenAttr< ::GOAL::ConditionsAdapter> ConditionsAdapter_children() const { return Udm::ChildrenAttr< ::GOAL::ConditionsAdapter>(impl, meta_ConditionsAdapter_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::ConditionsAdapter, Pred> ConditionsAdapter_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ConditionsAdapter, Pred>(impl, meta_ConditionsAdapter_children); }

			static ::Uml::CompositionChildRole meta_RootFolder_children;
			Udm::ChildrenAttr< ::GOAL::RootFolder> RootFolder_children() const { return Udm::ChildrenAttr< ::GOAL::RootFolder>(impl, meta_RootFolder_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::RootFolder, Pred> RootFolder_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::RootFolder, Pred>(impl, meta_RootFolder_children); }

			Udm::ChildrenAttr< ::GOAL::Adapter> Adapter_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Adapter>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Adapter, Pred> Adapter_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Adapter, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Class> Class_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Class>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Class, Pred> Class_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Class, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Module> Module_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Module>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Module, Pred> Module_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Module, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::CodeAdapter> CodeAdapter_kind_children() const { return Udm::ChildrenAttr< ::GOAL::CodeAdapter>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::CodeAdapter, Pred> CodeAdapter_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::CodeAdapter, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ModuleAdapter> ModuleAdapter_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ModuleAdapter>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ModuleAdapter, Pred> ModuleAdapter_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ModuleAdapter, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ClassAdapter> ClassAdapter_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ClassAdapter>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ClassAdapter, Pred> ClassAdapter_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ClassAdapter, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ConditionsAdapter> ConditionsAdapter_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ConditionsAdapter>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ConditionsAdapter, Pred> ConditionsAdapter_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ConditionsAdapter, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::RootFolder> RootFolder_kind_children() const { return Udm::ChildrenAttr< ::GOAL::RootFolder>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::RootFolder, Pred> RootFolder_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::RootFolder, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::MgaObject> MgaObject_kind_children() const { return Udm::ChildrenAttr< ::GOAL::MgaObject>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::MgaObject, Pred> MgaObject_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::MgaObject, Pred>(impl, Udm::NULLCHILDROLE); }

			static ::Uml::CompositionParentRole meta_RootFolder_parent;
			Udm::ParentAttr< ::GOAL::RootFolder> RootFolder_parent() const { return Udm::ParentAttr< ::GOAL::RootFolder>(impl, meta_RootFolder_parent); }

			Udm::ParentAttr< ::GOAL::RootFolder> parent() const { return Udm::ParentAttr< ::GOAL::RootFolder>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_RootFolder(*this);};
		};

		class  MgaObject :  virtual public Udm::Object {
		public:
			static ::Uml::Class meta;

			MgaObject() { }
			MgaObject(Udm::ObjectImpl *impl) : UDM_OBJECT(impl) { }
			MgaObject(const MgaObject &master) : UDM_OBJECT(master) { }
			static MgaObject Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static MgaObject Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			MgaObject CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			MgaObject CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::MgaObject> Instances() { return Udm::InstantiatedAttr< ::GOAL::MgaObject>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::MgaObject, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::MgaObject, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::MgaObject> Derived() { return Udm::DerivedAttr< ::GOAL::MgaObject>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::MgaObject, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::MgaObject, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::MgaObject> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::MgaObject>(impl);}

			static ::Uml::Attribute meta_position;
			Udm::StringAttr position() const { return Udm::StringAttr(impl, meta_position); }

			static ::Uml::Attribute meta_name;
			Udm::StringAttr name() const { return Udm::StringAttr(impl, meta_name); }

			Udm::ParentAttr<Udm::Object> parent() const { return Udm::ParentAttr<Udm::Object>(impl, Udm::NULLPARENTROLE); }
		};

		class  VariableRef :  public ::GOAL::MgaObject {
		public:
			static ::Uml::Class meta;

			VariableRef() { }
			VariableRef(Udm::ObjectImpl *impl) : ::GOAL::MgaObject(impl), UDM_OBJECT(impl) { }
			VariableRef(const VariableRef &master) : ::GOAL::MgaObject(master), UDM_OBJECT(master) { }
			static VariableRef Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static VariableRef Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			VariableRef CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			VariableRef CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::VariableRef> Instances() { return Udm::InstantiatedAttr< ::GOAL::VariableRef>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::VariableRef, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::VariableRef, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::VariableRef> Derived() { return Udm::DerivedAttr< ::GOAL::VariableRef>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::VariableRef, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::VariableRef, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::VariableRef> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::VariableRef>(impl);}

			static ::Uml::AssociationRole meta_ref;
			Udm::PointerAttr< ::GOAL::VariableRef_RefersTo_Base> ref() const { return Udm::PointerAttr< ::GOAL::VariableRef_RefersTo_Base>(impl, meta_ref); }

			static ::Uml::CompositionParentRole meta_VariableBase_parent;
			Udm::ParentAttr< ::GOAL::VariableBase> VariableBase_parent() const { return Udm::ParentAttr< ::GOAL::VariableBase>(impl, meta_VariableBase_parent); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_VariableRef(*this);};
		};

		class  Function :  public ::GOAL::MgaObject {
		public:
			static ::Uml::Class meta;

			Function() { }
			Function(Udm::ObjectImpl *impl) : ::GOAL::MgaObject(impl), UDM_OBJECT(impl) { }
			Function(const Function &master) : ::GOAL::MgaObject(master), UDM_OBJECT(master) { }
			static Function Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Function Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Function CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Function CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Function> Instances() { return Udm::InstantiatedAttr< ::GOAL::Function>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Function, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Function, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Function> Derived() { return Udm::DerivedAttr< ::GOAL::Function>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Function, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Function, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Function> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Function>(impl);}

			static ::Uml::Attribute meta_accessibility;
			Udm::StringAttr accessibility() const { return Udm::StringAttr(impl, meta_accessibility); }

			static ::Uml::AssociationRole meta_referedbyFunctionRef;
			Udm::AssocAttr< ::GOAL::FunctionCall> referedbyFunctionRef() const { return Udm::AssocAttr< ::GOAL::FunctionCall>(impl, meta_referedbyFunctionRef); }
			template <class Pred> Udm::AssocAttr< ::GOAL::FunctionCall, Pred > referedbyFunctionRef_sorted(const Pred &) const { return Udm::AssocAttr< ::GOAL::FunctionCall, Pred>(impl, meta_referedbyFunctionRef); }

			static ::Uml::CompositionChildRole meta_UnaryOperator_children;
			Udm::ChildrenAttr< ::GOAL::UnaryOperator> UnaryOperator_children() const { return Udm::ChildrenAttr< ::GOAL::UnaryOperator>(impl, meta_UnaryOperator_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::UnaryOperator, Pred> UnaryOperator_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::UnaryOperator, Pred>(impl, meta_UnaryOperator_children); }

			static ::Uml::CompositionChildRole meta_InfixOperators_children;
			Udm::ChildrenAttr< ::GOAL::InfixOperators> InfixOperators_children() const { return Udm::ChildrenAttr< ::GOAL::InfixOperators>(impl, meta_InfixOperators_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::InfixOperators, Pred> InfixOperators_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::InfixOperators, Pred>(impl, meta_InfixOperators_children); }

			static ::Uml::CompositionChildRole meta_IndexOperator_children;
			Udm::ChildrenAttr< ::GOAL::IndexOperator> IndexOperator_children() const { return Udm::ChildrenAttr< ::GOAL::IndexOperator>(impl, meta_IndexOperator_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::IndexOperator, Pred> IndexOperator_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::IndexOperator, Pred>(impl, meta_IndexOperator_children); }

			static ::Uml::CompositionChildRole meta_BinaryOperator_children;
			Udm::ChildrenAttr< ::GOAL::BinaryOperator> BinaryOperator_children() const { return Udm::ChildrenAttr< ::GOAL::BinaryOperator>(impl, meta_BinaryOperator_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::BinaryOperator, Pred> BinaryOperator_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::BinaryOperator, Pred>(impl, meta_BinaryOperator_children); }

			static ::Uml::CompositionChildRole meta_ConstBase_children;
			Udm::ChildrenAttr< ::GOAL::ConstBase> ConstBase_children() const { return Udm::ChildrenAttr< ::GOAL::ConstBase>(impl, meta_ConstBase_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::ConstBase, Pred> ConstBase_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ConstBase, Pred>(impl, meta_ConstBase_children); }

			static ::Uml::CompositionChildRole meta_Argument_children;
			Udm::ChildrenAttr< ::GOAL::Argument> Argument_children() const { return Udm::ChildrenAttr< ::GOAL::Argument>(impl, meta_Argument_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::Argument, Pred> Argument_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Argument, Pred>(impl, meta_Argument_children); }

			static ::Uml::CompositionChildRole meta_CommonConnection_children;
			Udm::ChildrenAttr< ::GOAL::CommonConnection> CommonConnection_children() const { return Udm::ChildrenAttr< ::GOAL::CommonConnection>(impl, meta_CommonConnection_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::CommonConnection, Pred> CommonConnection_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::CommonConnection, Pred>(impl, meta_CommonConnection_children); }

			static ::Uml::CompositionChildRole meta_FunctionCall_children;
			Udm::ChildrenAttr< ::GOAL::FunctionCall> FunctionCall_children() const { return Udm::ChildrenAttr< ::GOAL::FunctionCall>(impl, meta_FunctionCall_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::FunctionCall, Pred> FunctionCall_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::FunctionCall, Pred>(impl, meta_FunctionCall_children); }

			static ::Uml::CompositionChildRole meta_AccumulatorBase_children;
			Udm::ChildrenAttr< ::GOAL::AccumulatorBase> AccumulatorBase_children() const { return Udm::ChildrenAttr< ::GOAL::AccumulatorBase>(impl, meta_AccumulatorBase_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::AccumulatorBase, Pred> AccumulatorBase_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::AccumulatorBase, Pred>(impl, meta_AccumulatorBase_children); }

			static ::Uml::CompositionChildRole meta_IOBase_children;
			Udm::ChildrenAttr< ::GOAL::IOBase> IOBase_children() const { return Udm::ChildrenAttr< ::GOAL::IOBase>(impl, meta_IOBase_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::IOBase, Pred> IOBase_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::IOBase, Pred>(impl, meta_IOBase_children); }

			static ::Uml::CompositionChildRole meta_ControlBase_children;
			Udm::ChildrenAttr< ::GOAL::ControlBase> ControlBase_children() const { return Udm::ChildrenAttr< ::GOAL::ControlBase>(impl, meta_ControlBase_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::ControlBase, Pred> ControlBase_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ControlBase, Pred>(impl, meta_ControlBase_children); }

			static ::Uml::CompositionChildRole meta_Variable_children;
			Udm::ChildrenAttr< ::GOAL::Variable> Variable_children() const { return Udm::ChildrenAttr< ::GOAL::Variable>(impl, meta_Variable_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::Variable, Pred> Variable_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Variable, Pred>(impl, meta_Variable_children); }

			static ::Uml::CompositionChildRole meta_Return_children;
			Udm::ChildrenAttr< ::GOAL::Return> Return_children() const { return Udm::ChildrenAttr< ::GOAL::Return>(impl, meta_Return_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::Return, Pred> Return_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Return, Pred>(impl, meta_Return_children); }

			Udm::ChildrenAttr< ::GOAL::VariableRef_RefersTo_Base> VariableRef_RefersTo_Base_kind_children() const { return Udm::ChildrenAttr< ::GOAL::VariableRef_RefersTo_Base>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::VariableRef_RefersTo_Base, Pred> VariableRef_RefersTo_Base_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::VariableRef_RefersTo_Base, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::UnaryOperator> UnaryOperator_kind_children() const { return Udm::ChildrenAttr< ::GOAL::UnaryOperator>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::UnaryOperator, Pred> UnaryOperator_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::UnaryOperator, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::BinaryOperator> BinaryOperator_kind_children() const { return Udm::ChildrenAttr< ::GOAL::BinaryOperator>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::BinaryOperator, Pred> BinaryOperator_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::BinaryOperator, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Plus> Plus_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Plus>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Plus, Pred> Plus_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Plus, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Divide> Divide_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Divide>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Divide, Pred> Divide_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Divide, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Times> Times_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Times>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Times, Pred> Times_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Times, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Minus> Minus_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Minus>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Minus, Pred> Minus_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Minus, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Modulus> Modulus_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Modulus>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Modulus, Pred> Modulus_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Modulus, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::CommonConnection> CommonConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::CommonConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::CommonConnection, Pred> CommonConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::CommonConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::RightHandSideObject> RightHandSideObject_kind_children() const { return Udm::ChildrenAttr< ::GOAL::RightHandSideObject>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::RightHandSideObject, Pred> RightHandSideObject_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::RightHandSideObject, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::FunctionCall> FunctionCall_kind_children() const { return Udm::ChildrenAttr< ::GOAL::FunctionCall>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::FunctionCall, Pred> FunctionCall_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::FunctionCall, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Not> Not_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Not>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Not, Pred> Not_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Not, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::InfixOperators> InfixOperators_kind_children() const { return Udm::ChildrenAttr< ::GOAL::InfixOperators>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::InfixOperators, Pred> InfixOperators_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::InfixOperators, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Assignment> Assignment_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Assignment>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Assignment, Pred> Assignment_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Assignment, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::File> File_kind_children() const { return Udm::ChildrenAttr< ::GOAL::File>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::File, Pred> File_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::File, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Console> Console_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Console>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Console, Pred> Console_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Console, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Keyboard> Keyboard_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Keyboard>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Keyboard, Pred> Keyboard_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Keyboard, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::AssignmentConnection> AssignmentConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::AssignmentConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::AssignmentConnection, Pred> AssignmentConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::AssignmentConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ConstBase> ConstBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ConstBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ConstBase, Pred> ConstBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ConstBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Brackets> Brackets_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Brackets>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Brackets, Pred> Brackets_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Brackets, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::IOBase> IOBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::IOBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::IOBase, Pred> IOBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::IOBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Output> Output_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Output>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Output, Pred> Output_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Output, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Input> Input_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Input>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Input, Pred> Input_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Input, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::IndexOperator> IndexOperator_kind_children() const { return Udm::ChildrenAttr< ::GOAL::IndexOperator>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::IndexOperator, Pred> IndexOperator_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::IndexOperator, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::IndexConnection> IndexConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::IndexConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::IndexConnection, Pred> IndexConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::IndexConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::NonModifyingConnection> NonModifyingConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::NonModifyingConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::NonModifyingConnection, Pred> NonModifyingConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::NonModifyingConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::For> For_kind_children() const { return Udm::ChildrenAttr< ::GOAL::For>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::For, Pred> For_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::For, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::While> While_kind_children() const { return Udm::ChildrenAttr< ::GOAL::While>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::While, Pred> While_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::While, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::If> If_kind_children() const { return Udm::ChildrenAttr< ::GOAL::If>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::If, Pred> If_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::If, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::InputOutput> InputOutput_kind_children() const { return Udm::ChildrenAttr< ::GOAL::InputOutput>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::InputOutput, Pred> InputOutput_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::InputOutput, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::PlusEquals> PlusEquals_kind_children() const { return Udm::ChildrenAttr< ::GOAL::PlusEquals>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::PlusEquals, Pred> PlusEquals_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::PlusEquals, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::DivideEquals> DivideEquals_kind_children() const { return Udm::ChildrenAttr< ::GOAL::DivideEquals>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::DivideEquals, Pred> DivideEquals_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::DivideEquals, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::MinusEquals> MinusEquals_kind_children() const { return Udm::ChildrenAttr< ::GOAL::MinusEquals>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::MinusEquals, Pred> MinusEquals_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::MinusEquals, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::TimesEquals> TimesEquals_kind_children() const { return Udm::ChildrenAttr< ::GOAL::TimesEquals>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::TimesEquals, Pred> TimesEquals_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::TimesEquals, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::AccumulatorBase> AccumulatorBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::AccumulatorBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::AccumulatorBase, Pred> AccumulatorBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::AccumulatorBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Increment> Increment_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Increment>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Increment, Pred> Increment_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Increment, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Decrement> Decrement_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Decrement>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Decrement, Pred> Decrement_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Decrement, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::OutputConnection> OutputConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::OutputConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::OutputConnection, Pred> OutputConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::OutputConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ArrayAssignmentConnection> ArrayAssignmentConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ArrayAssignmentConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ArrayAssignmentConnection, Pred> ArrayAssignmentConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ArrayAssignmentConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::AssignmentRHSConnection> AssignmentRHSConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::AssignmentRHSConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::AssignmentRHSConnection, Pred> AssignmentRHSConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::AssignmentRHSConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ArgumentConnection> ArgumentConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ArgumentConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ArgumentConnection, Pred> ArgumentConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ArgumentConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ControlBase> ControlBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ControlBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ControlBase, Pred> ControlBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ControlBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Return> Return_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Return>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Return, Pred> Return_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Return, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Argument> Argument_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Argument>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Argument, Pred> Argument_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Argument, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Const> Const_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Const>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Const, Pred> Const_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Const, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::VariableBase> VariableBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::VariableBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::VariableBase, Pred> VariableBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::VariableBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Variable> Variable_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Variable>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Variable, Pred> Variable_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Variable, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::MgaObject> MgaObject_kind_children() const { return Udm::ChildrenAttr< ::GOAL::MgaObject>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::MgaObject, Pred> MgaObject_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::MgaObject, Pred>(impl, Udm::NULLCHILDROLE); }

			static ::Uml::CompositionParentRole meta_ClassAdapter_parent;
			Udm::ParentAttr< ::GOAL::ClassAdapter> ClassAdapter_parent() const { return Udm::ParentAttr< ::GOAL::ClassAdapter>(impl, meta_ClassAdapter_parent); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_Function(*this);};
		};

		class  Adapter :  public ::GOAL::MgaObject {
		public:
			static ::Uml::Class meta;

			Adapter() { }
			Adapter(Udm::ObjectImpl *impl) : ::GOAL::MgaObject(impl), UDM_OBJECT(impl) { }
			Adapter(const Adapter &master) : ::GOAL::MgaObject(master), UDM_OBJECT(master) { }
			static Adapter Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Adapter Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Adapter CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Adapter CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Adapter> Instances() { return Udm::InstantiatedAttr< ::GOAL::Adapter>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Adapter, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Adapter, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Adapter> Derived() { return Udm::DerivedAttr< ::GOAL::Adapter>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Adapter, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Adapter, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Adapter> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Adapter>(impl);}

			Udm::ParentAttr<Udm::Object> parent() const { return Udm::ParentAttr<Udm::Object>(impl, Udm::NULLPARENTROLE); }
		};

		class  CommonConnection :  public ::GOAL::MgaObject {
		public:
			static ::Uml::Class meta;

			CommonConnection() { }
			CommonConnection(Udm::ObjectImpl *impl) : ::GOAL::MgaObject(impl), UDM_OBJECT(impl) { }
			CommonConnection(const CommonConnection &master) : ::GOAL::MgaObject(master), UDM_OBJECT(master) { }
			static CommonConnection Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static CommonConnection Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			CommonConnection CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			CommonConnection CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::CommonConnection> Instances() { return Udm::InstantiatedAttr< ::GOAL::CommonConnection>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::CommonConnection, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::CommonConnection, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::CommonConnection> Derived() { return Udm::DerivedAttr< ::GOAL::CommonConnection>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::CommonConnection, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::CommonConnection, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::CommonConnection> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::CommonConnection>(impl);}

			static ::Uml::CompositionParentRole meta_Function_parent;
			Udm::ParentAttr< ::GOAL::Function> Function_parent() const { return Udm::ParentAttr< ::GOAL::Function>(impl, meta_Function_parent); }

			static ::Uml::CompositionParentRole meta_CodeAdapter_parent;
			Udm::ParentAttr< ::GOAL::CodeAdapter> CodeAdapter_parent() const { return Udm::ParentAttr< ::GOAL::CodeAdapter>(impl, meta_CodeAdapter_parent); }

			static ::Uml::CompositionParentRole meta_ConditionsAdapter_parent;
			Udm::ParentAttr< ::GOAL::ConditionsAdapter> ConditionsAdapter_parent() const { return Udm::ParentAttr< ::GOAL::ConditionsAdapter>(impl, meta_ConditionsAdapter_parent); }

			static ::Uml::CompositionParentRole meta_IndexOperator_parent;
			Udm::ParentAttr< ::GOAL::IndexOperator> IndexOperator_parent() const { return Udm::ParentAttr< ::GOAL::IndexOperator>(impl, meta_IndexOperator_parent); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			static ::Uml::Constraint meta_CheckForOneSource;
			static ::Uml::Constraint meta_NoConnectToSelf;
			static ::Uml::Constraint meta_CheckForOneDest;
		};

		class  RightHandSideObject :  public ::GOAL::MgaObject {
		public:
			static ::Uml::Class meta;

			RightHandSideObject() { }
			RightHandSideObject(Udm::ObjectImpl *impl) : ::GOAL::MgaObject(impl), UDM_OBJECT(impl) { }
			RightHandSideObject(const RightHandSideObject &master) : ::GOAL::MgaObject(master), UDM_OBJECT(master) { }
			static RightHandSideObject Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static RightHandSideObject Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			RightHandSideObject CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			RightHandSideObject CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::RightHandSideObject> Instances() { return Udm::InstantiatedAttr< ::GOAL::RightHandSideObject>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::RightHandSideObject, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::RightHandSideObject, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::RightHandSideObject> Derived() { return Udm::DerivedAttr< ::GOAL::RightHandSideObject>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::RightHandSideObject, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::RightHandSideObject, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::RightHandSideObject> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::RightHandSideObject>(impl);}

			static ::Uml::AssociationRole meta_srcNonModifyingConnection;
			static ::Uml::AssociationRole meta_srcNonModifyingConnection_rev;
			Udm::AClassAssocAttr< ::GOAL::NonModifyingConnection, ::GOAL::RightHandSideObject> srcNonModifyingConnection() const { return Udm::AClassAssocAttr< ::GOAL::NonModifyingConnection, ::GOAL::RightHandSideObject>(impl, meta_srcNonModifyingConnection, meta_srcNonModifyingConnection_rev); }
			template<class Pred> Udm::AClassAssocAttr< ::GOAL::NonModifyingConnection, ::GOAL::RightHandSideObject, Pred> srcNonModifyingConnection_sorted(const Pred &) const { return Udm::AClassAssocAttr< ::GOAL::NonModifyingConnection, ::GOAL::RightHandSideObject, Pred>(impl, meta_srcNonModifyingConnection, meta_srcNonModifyingConnection_rev); }

			static ::Uml::AssociationRole meta_dstNonModifyingConnection;
			static ::Uml::AssociationRole meta_dstNonModifyingConnection_rev;
			Udm::AClassAssocAttr< ::GOAL::NonModifyingConnection, ::GOAL::RightHandSideObject> dstNonModifyingConnection() const { return Udm::AClassAssocAttr< ::GOAL::NonModifyingConnection, ::GOAL::RightHandSideObject>(impl, meta_dstNonModifyingConnection, meta_dstNonModifyingConnection_rev); }
			template<class Pred> Udm::AClassAssocAttr< ::GOAL::NonModifyingConnection, ::GOAL::RightHandSideObject, Pred> dstNonModifyingConnection_sorted(const Pred &) const { return Udm::AClassAssocAttr< ::GOAL::NonModifyingConnection, ::GOAL::RightHandSideObject, Pred>(impl, meta_dstNonModifyingConnection, meta_dstNonModifyingConnection_rev); }

			static ::Uml::AssociationRole meta_dstAssignmentRHSConnection;
			static ::Uml::AssociationRole meta_dstAssignmentRHSConnection_rev;
			Udm::AClassAssocAttr< ::GOAL::AssignmentRHSConnection, ::GOAL::InfixOperators> dstAssignmentRHSConnection() const { return Udm::AClassAssocAttr< ::GOAL::AssignmentRHSConnection, ::GOAL::InfixOperators>(impl, meta_dstAssignmentRHSConnection, meta_dstAssignmentRHSConnection_rev); }
			template<class Pred> Udm::AClassAssocAttr< ::GOAL::AssignmentRHSConnection, ::GOAL::InfixOperators, Pred> dstAssignmentRHSConnection_sorted(const Pred &) const { return Udm::AClassAssocAttr< ::GOAL::AssignmentRHSConnection, ::GOAL::InfixOperators, Pred>(impl, meta_dstAssignmentRHSConnection, meta_dstAssignmentRHSConnection_rev); }

			static ::Uml::AssociationRole meta_dstOutputConnection;
			static ::Uml::AssociationRole meta_dstOutputConnection_rev;
			Udm::AClassAssocAttr< ::GOAL::ArgumentConnection, ::GOAL::Argument> dstOutputConnection() const { return Udm::AClassAssocAttr< ::GOAL::ArgumentConnection, ::GOAL::Argument>(impl, meta_dstOutputConnection, meta_dstOutputConnection_rev); }
			template<class Pred> Udm::AClassAssocAttr< ::GOAL::ArgumentConnection, ::GOAL::Argument, Pred> dstOutputConnection_sorted(const Pred &) const { return Udm::AClassAssocAttr< ::GOAL::ArgumentConnection, ::GOAL::Argument, Pred>(impl, meta_dstOutputConnection, meta_dstOutputConnection_rev); }

			Udm::ParentAttr<Udm::Object> parent() const { return Udm::ParentAttr<Udm::Object>(impl, Udm::NULLPARENTROLE); }
		};

		class  UnaryOperator :  public ::GOAL::RightHandSideObject {
		public:
			static ::Uml::Class meta;

			UnaryOperator() { }
			UnaryOperator(Udm::ObjectImpl *impl) : ::GOAL::RightHandSideObject(impl), UDM_OBJECT(impl) { }
			UnaryOperator(const UnaryOperator &master) : ::GOAL::RightHandSideObject(master), UDM_OBJECT(master) { }
			static UnaryOperator Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static UnaryOperator Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			UnaryOperator CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			UnaryOperator CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::UnaryOperator> Instances() { return Udm::InstantiatedAttr< ::GOAL::UnaryOperator>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::UnaryOperator, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::UnaryOperator, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::UnaryOperator> Derived() { return Udm::DerivedAttr< ::GOAL::UnaryOperator>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::UnaryOperator, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::UnaryOperator, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::UnaryOperator> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::UnaryOperator>(impl);}

			static ::Uml::CompositionParentRole meta_CodeAdapter_parent;
			Udm::ParentAttr< ::GOAL::CodeAdapter> CodeAdapter_parent() const { return Udm::ParentAttr< ::GOAL::CodeAdapter>(impl, meta_CodeAdapter_parent); }

			static ::Uml::CompositionParentRole meta_Function_parent;
			Udm::ParentAttr< ::GOAL::Function> Function_parent() const { return Udm::ParentAttr< ::GOAL::Function>(impl, meta_Function_parent); }

			static ::Uml::CompositionParentRole meta_ConditionsAdapter_parent;
			Udm::ParentAttr< ::GOAL::ConditionsAdapter> ConditionsAdapter_parent() const { return Udm::ParentAttr< ::GOAL::ConditionsAdapter>(impl, meta_ConditionsAdapter_parent); }

			static ::Uml::CompositionParentRole meta_IndexOperator_parent;
			Udm::ParentAttr< ::GOAL::IndexOperator> IndexOperator_parent() const { return Udm::ParentAttr< ::GOAL::IndexOperator>(impl, meta_IndexOperator_parent); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
		};

		class  BinaryOperator :  public ::GOAL::RightHandSideObject {
		public:
			static ::Uml::Class meta;

			BinaryOperator() { }
			BinaryOperator(Udm::ObjectImpl *impl) : ::GOAL::RightHandSideObject(impl), UDM_OBJECT(impl) { }
			BinaryOperator(const BinaryOperator &master) : ::GOAL::RightHandSideObject(master), UDM_OBJECT(master) { }
			static BinaryOperator Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static BinaryOperator Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			BinaryOperator CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			BinaryOperator CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::BinaryOperator> Instances() { return Udm::InstantiatedAttr< ::GOAL::BinaryOperator>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::BinaryOperator, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::BinaryOperator, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::BinaryOperator> Derived() { return Udm::DerivedAttr< ::GOAL::BinaryOperator>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::BinaryOperator, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::BinaryOperator, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::BinaryOperator> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::BinaryOperator>(impl);}

			static ::Uml::CompositionParentRole meta_CodeAdapter_parent;
			Udm::ParentAttr< ::GOAL::CodeAdapter> CodeAdapter_parent() const { return Udm::ParentAttr< ::GOAL::CodeAdapter>(impl, meta_CodeAdapter_parent); }

			static ::Uml::CompositionParentRole meta_Function_parent;
			Udm::ParentAttr< ::GOAL::Function> Function_parent() const { return Udm::ParentAttr< ::GOAL::Function>(impl, meta_Function_parent); }

			static ::Uml::CompositionParentRole meta_ConditionsAdapter_parent;
			Udm::ParentAttr< ::GOAL::ConditionsAdapter> ConditionsAdapter_parent() const { return Udm::ParentAttr< ::GOAL::ConditionsAdapter>(impl, meta_ConditionsAdapter_parent); }

			static ::Uml::CompositionParentRole meta_IndexOperator_parent;
			Udm::ParentAttr< ::GOAL::IndexOperator> IndexOperator_parent() const { return Udm::ParentAttr< ::GOAL::IndexOperator>(impl, meta_IndexOperator_parent); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
		};

		class  Plus :  public ::GOAL::BinaryOperator {
		public:
			static ::Uml::Class meta;

			Plus() { }
			Plus(Udm::ObjectImpl *impl) : ::GOAL::BinaryOperator(impl), UDM_OBJECT(impl) { }
			Plus(const Plus &master) : ::GOAL::BinaryOperator(master), UDM_OBJECT(master) { }
			static Plus Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Plus Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Plus CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Plus CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Plus> Instances() { return Udm::InstantiatedAttr< ::GOAL::Plus>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Plus, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Plus, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Plus> Derived() { return Udm::DerivedAttr< ::GOAL::Plus>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Plus, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Plus, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Plus> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Plus>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_Plus(*this);};
		};

		class  Divide :  public ::GOAL::BinaryOperator {
		public:
			static ::Uml::Class meta;

			Divide() { }
			Divide(Udm::ObjectImpl *impl) : ::GOAL::BinaryOperator(impl), UDM_OBJECT(impl) { }
			Divide(const Divide &master) : ::GOAL::BinaryOperator(master), UDM_OBJECT(master) { }
			static Divide Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Divide Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Divide CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Divide CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Divide> Instances() { return Udm::InstantiatedAttr< ::GOAL::Divide>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Divide, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Divide, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Divide> Derived() { return Udm::DerivedAttr< ::GOAL::Divide>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Divide, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Divide, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Divide> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Divide>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_Divide(*this);};
		};

		class  Times :  public ::GOAL::BinaryOperator {
		public:
			static ::Uml::Class meta;

			Times() { }
			Times(Udm::ObjectImpl *impl) : ::GOAL::BinaryOperator(impl), UDM_OBJECT(impl) { }
			Times(const Times &master) : ::GOAL::BinaryOperator(master), UDM_OBJECT(master) { }
			static Times Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Times Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Times CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Times CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Times> Instances() { return Udm::InstantiatedAttr< ::GOAL::Times>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Times, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Times, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Times> Derived() { return Udm::DerivedAttr< ::GOAL::Times>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Times, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Times, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Times> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Times>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_Times(*this);};
		};

		class  Minus :  public ::GOAL::BinaryOperator {
		public:
			static ::Uml::Class meta;

			Minus() { }
			Minus(Udm::ObjectImpl *impl) : ::GOAL::BinaryOperator(impl), UDM_OBJECT(impl) { }
			Minus(const Minus &master) : ::GOAL::BinaryOperator(master), UDM_OBJECT(master) { }
			static Minus Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Minus Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Minus CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Minus CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Minus> Instances() { return Udm::InstantiatedAttr< ::GOAL::Minus>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Minus, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Minus, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Minus> Derived() { return Udm::DerivedAttr< ::GOAL::Minus>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Minus, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Minus, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Minus> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Minus>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_Minus(*this);};
		};

		class  Modulus :  public ::GOAL::BinaryOperator {
		public:
			static ::Uml::Class meta;

			Modulus() { }
			Modulus(Udm::ObjectImpl *impl) : ::GOAL::BinaryOperator(impl), UDM_OBJECT(impl) { }
			Modulus(const Modulus &master) : ::GOAL::BinaryOperator(master), UDM_OBJECT(master) { }
			static Modulus Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Modulus Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Modulus CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Modulus CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Modulus> Instances() { return Udm::InstantiatedAttr< ::GOAL::Modulus>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Modulus, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Modulus, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Modulus> Derived() { return Udm::DerivedAttr< ::GOAL::Modulus>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Modulus, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Modulus, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Modulus> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Modulus>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_Modulus(*this);};
		};

		class  FunctionCall :  public ::GOAL::RightHandSideObject {
		public:
			static ::Uml::Class meta;

			FunctionCall() { }
			FunctionCall(Udm::ObjectImpl *impl) : ::GOAL::RightHandSideObject(impl), UDM_OBJECT(impl) { }
			FunctionCall(const FunctionCall &master) : ::GOAL::RightHandSideObject(master), UDM_OBJECT(master) { }
			static FunctionCall Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static FunctionCall Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			FunctionCall CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			FunctionCall CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::FunctionCall> Instances() { return Udm::InstantiatedAttr< ::GOAL::FunctionCall>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::FunctionCall, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::FunctionCall, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::FunctionCall> Derived() { return Udm::DerivedAttr< ::GOAL::FunctionCall>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::FunctionCall, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::FunctionCall, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::FunctionCall> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::FunctionCall>(impl);}

			static ::Uml::AssociationRole meta_ref;
			Udm::PointerAttr< ::GOAL::Function> ref() const { return Udm::PointerAttr< ::GOAL::Function>(impl, meta_ref); }

			static ::Uml::CompositionParentRole meta_Function_parent;
			Udm::ParentAttr< ::GOAL::Function> Function_parent() const { return Udm::ParentAttr< ::GOAL::Function>(impl, meta_Function_parent); }

			static ::Uml::CompositionParentRole meta_CodeAdapter_parent;
			Udm::ParentAttr< ::GOAL::CodeAdapter> CodeAdapter_parent() const { return Udm::ParentAttr< ::GOAL::CodeAdapter>(impl, meta_CodeAdapter_parent); }

			static ::Uml::CompositionParentRole meta_ConditionsAdapter_parent;
			Udm::ParentAttr< ::GOAL::ConditionsAdapter> ConditionsAdapter_parent() const { return Udm::ParentAttr< ::GOAL::ConditionsAdapter>(impl, meta_ConditionsAdapter_parent); }

			static ::Uml::CompositionParentRole meta_IndexOperator_parent;
			Udm::ParentAttr< ::GOAL::IndexOperator> IndexOperator_parent() const { return Udm::ParentAttr< ::GOAL::IndexOperator>(impl, meta_IndexOperator_parent); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_FunctionCall(*this);};
		};

		class  CodeAdapter :  public ::GOAL::Adapter {
		public:
			static ::Uml::Class meta;

			CodeAdapter() { }
			CodeAdapter(Udm::ObjectImpl *impl) : ::GOAL::Adapter(impl), UDM_OBJECT(impl) { }
			CodeAdapter(const CodeAdapter &master) : ::GOAL::Adapter(master), UDM_OBJECT(master) { }
			static CodeAdapter Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static CodeAdapter Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			CodeAdapter CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			CodeAdapter CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::CodeAdapter> Instances() { return Udm::InstantiatedAttr< ::GOAL::CodeAdapter>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::CodeAdapter, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::CodeAdapter, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::CodeAdapter> Derived() { return Udm::DerivedAttr< ::GOAL::CodeAdapter>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::CodeAdapter, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::CodeAdapter, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::CodeAdapter> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::CodeAdapter>(impl);}

			static ::Uml::CompositionChildRole meta_CommonConnection_children;
			Udm::ChildrenAttr< ::GOAL::CommonConnection> CommonConnection_children() const { return Udm::ChildrenAttr< ::GOAL::CommonConnection>(impl, meta_CommonConnection_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::CommonConnection, Pred> CommonConnection_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::CommonConnection, Pred>(impl, meta_CommonConnection_children); }

			static ::Uml::CompositionChildRole meta_ConstBase_children;
			Udm::ChildrenAttr< ::GOAL::ConstBase> ConstBase_children() const { return Udm::ChildrenAttr< ::GOAL::ConstBase>(impl, meta_ConstBase_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::ConstBase, Pred> ConstBase_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ConstBase, Pred>(impl, meta_ConstBase_children); }

			static ::Uml::CompositionChildRole meta_UnaryOperator_children;
			Udm::ChildrenAttr< ::GOAL::UnaryOperator> UnaryOperator_children() const { return Udm::ChildrenAttr< ::GOAL::UnaryOperator>(impl, meta_UnaryOperator_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::UnaryOperator, Pred> UnaryOperator_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::UnaryOperator, Pred>(impl, meta_UnaryOperator_children); }

			static ::Uml::CompositionChildRole meta_BinaryOperator_children;
			Udm::ChildrenAttr< ::GOAL::BinaryOperator> BinaryOperator_children() const { return Udm::ChildrenAttr< ::GOAL::BinaryOperator>(impl, meta_BinaryOperator_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::BinaryOperator, Pred> BinaryOperator_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::BinaryOperator, Pred>(impl, meta_BinaryOperator_children); }

			static ::Uml::CompositionChildRole meta_IndexOperator_children;
			Udm::ChildrenAttr< ::GOAL::IndexOperator> IndexOperator_children() const { return Udm::ChildrenAttr< ::GOAL::IndexOperator>(impl, meta_IndexOperator_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::IndexOperator, Pred> IndexOperator_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::IndexOperator, Pred>(impl, meta_IndexOperator_children); }

			static ::Uml::CompositionChildRole meta_InfixOperators_children;
			Udm::ChildrenAttr< ::GOAL::InfixOperators> InfixOperators_children() const { return Udm::ChildrenAttr< ::GOAL::InfixOperators>(impl, meta_InfixOperators_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::InfixOperators, Pred> InfixOperators_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::InfixOperators, Pred>(impl, meta_InfixOperators_children); }

			static ::Uml::CompositionChildRole meta_CodeAdapter_children;
			Udm::ChildrenAttr< ::GOAL::CodeAdapter> CodeAdapter_children() const { return Udm::ChildrenAttr< ::GOAL::CodeAdapter>(impl, meta_CodeAdapter_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::CodeAdapter, Pred> CodeAdapter_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::CodeAdapter, Pred>(impl, meta_CodeAdapter_children); }

			static ::Uml::CompositionChildRole meta_BooleanOperators_children;
			Udm::ChildrenAttr< ::GOAL::BooleanOperators> BooleanOperators_children() const { return Udm::ChildrenAttr< ::GOAL::BooleanOperators>(impl, meta_BooleanOperators_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::BooleanOperators, Pred> BooleanOperators_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::BooleanOperators, Pred>(impl, meta_BooleanOperators_children); }

			static ::Uml::CompositionChildRole meta_FunctionCall_children;
			Udm::ChildrenAttr< ::GOAL::FunctionCall> FunctionCall_children() const { return Udm::ChildrenAttr< ::GOAL::FunctionCall>(impl, meta_FunctionCall_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::FunctionCall, Pred> FunctionCall_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::FunctionCall, Pred>(impl, meta_FunctionCall_children); }

			static ::Uml::CompositionChildRole meta_AccumulatorBase_children;
			Udm::ChildrenAttr< ::GOAL::AccumulatorBase> AccumulatorBase_children() const { return Udm::ChildrenAttr< ::GOAL::AccumulatorBase>(impl, meta_AccumulatorBase_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::AccumulatorBase, Pred> AccumulatorBase_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::AccumulatorBase, Pred>(impl, meta_AccumulatorBase_children); }

			static ::Uml::CompositionChildRole meta_IOBase_children;
			Udm::ChildrenAttr< ::GOAL::IOBase> IOBase_children() const { return Udm::ChildrenAttr< ::GOAL::IOBase>(impl, meta_IOBase_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::IOBase, Pred> IOBase_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::IOBase, Pred>(impl, meta_IOBase_children); }

			static ::Uml::CompositionChildRole meta_ControlBase_children;
			Udm::ChildrenAttr< ::GOAL::ControlBase> ControlBase_children() const { return Udm::ChildrenAttr< ::GOAL::ControlBase>(impl, meta_ControlBase_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::ControlBase, Pred> ControlBase_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ControlBase, Pred>(impl, meta_ControlBase_children); }

			static ::Uml::CompositionChildRole meta_Variable_children;
			Udm::ChildrenAttr< ::GOAL::Variable> Variable_children() const { return Udm::ChildrenAttr< ::GOAL::Variable>(impl, meta_Variable_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::Variable, Pred> Variable_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Variable, Pred>(impl, meta_Variable_children); }

			Udm::ChildrenAttr< ::GOAL::VariableRef_RefersTo_Base> VariableRef_RefersTo_Base_kind_children() const { return Udm::ChildrenAttr< ::GOAL::VariableRef_RefersTo_Base>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::VariableRef_RefersTo_Base, Pred> VariableRef_RefersTo_Base_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::VariableRef_RefersTo_Base, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::UnaryOperator> UnaryOperator_kind_children() const { return Udm::ChildrenAttr< ::GOAL::UnaryOperator>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::UnaryOperator, Pred> UnaryOperator_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::UnaryOperator, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::BinaryOperator> BinaryOperator_kind_children() const { return Udm::ChildrenAttr< ::GOAL::BinaryOperator>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::BinaryOperator, Pred> BinaryOperator_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::BinaryOperator, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Plus> Plus_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Plus>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Plus, Pred> Plus_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Plus, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Divide> Divide_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Divide>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Divide, Pred> Divide_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Divide, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Times> Times_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Times>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Times, Pred> Times_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Times, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Minus> Minus_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Minus>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Minus, Pred> Minus_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Minus, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Modulus> Modulus_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Modulus>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Modulus, Pred> Modulus_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Modulus, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Adapter> Adapter_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Adapter>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Adapter, Pred> Adapter_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Adapter, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::CommonConnection> CommonConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::CommonConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::CommonConnection, Pred> CommonConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::CommonConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::RightHandSideObject> RightHandSideObject_kind_children() const { return Udm::ChildrenAttr< ::GOAL::RightHandSideObject>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::RightHandSideObject, Pred> RightHandSideObject_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::RightHandSideObject, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::FunctionCall> FunctionCall_kind_children() const { return Udm::ChildrenAttr< ::GOAL::FunctionCall>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::FunctionCall, Pred> FunctionCall_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::FunctionCall, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::CodeAdapter> CodeAdapter_kind_children() const { return Udm::ChildrenAttr< ::GOAL::CodeAdapter>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::CodeAdapter, Pred> CodeAdapter_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::CodeAdapter, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Not> Not_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Not>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Not, Pred> Not_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Not, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::InfixOperators> InfixOperators_kind_children() const { return Udm::ChildrenAttr< ::GOAL::InfixOperators>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::InfixOperators, Pred> InfixOperators_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::InfixOperators, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Assignment> Assignment_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Assignment>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Assignment, Pred> Assignment_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Assignment, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::File> File_kind_children() const { return Udm::ChildrenAttr< ::GOAL::File>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::File, Pred> File_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::File, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Console> Console_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Console>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Console, Pred> Console_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Console, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Keyboard> Keyboard_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Keyboard>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Keyboard, Pred> Keyboard_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Keyboard, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::AssignmentConnection> AssignmentConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::AssignmentConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::AssignmentConnection, Pred> AssignmentConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::AssignmentConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ConstBase> ConstBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ConstBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ConstBase, Pred> ConstBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ConstBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Brackets> Brackets_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Brackets>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Brackets, Pred> Brackets_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Brackets, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::IOBase> IOBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::IOBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::IOBase, Pred> IOBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::IOBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Output> Output_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Output>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Output, Pred> Output_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Output, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Input> Input_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Input>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Input, Pred> Input_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Input, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::IndexOperator> IndexOperator_kind_children() const { return Udm::ChildrenAttr< ::GOAL::IndexOperator>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::IndexOperator, Pred> IndexOperator_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::IndexOperator, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::IndexConnection> IndexConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::IndexConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::IndexConnection, Pred> IndexConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::IndexConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::NonModifyingConnection> NonModifyingConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::NonModifyingConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::NonModifyingConnection, Pred> NonModifyingConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::NonModifyingConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::For> For_kind_children() const { return Udm::ChildrenAttr< ::GOAL::For>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::For, Pred> For_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::For, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::While> While_kind_children() const { return Udm::ChildrenAttr< ::GOAL::While>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::While, Pred> While_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::While, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::If> If_kind_children() const { return Udm::ChildrenAttr< ::GOAL::If>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::If, Pred> If_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::If, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::InputOutput> InputOutput_kind_children() const { return Udm::ChildrenAttr< ::GOAL::InputOutput>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::InputOutput, Pred> InputOutput_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::InputOutput, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::PlusEquals> PlusEquals_kind_children() const { return Udm::ChildrenAttr< ::GOAL::PlusEquals>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::PlusEquals, Pred> PlusEquals_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::PlusEquals, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::DivideEquals> DivideEquals_kind_children() const { return Udm::ChildrenAttr< ::GOAL::DivideEquals>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::DivideEquals, Pred> DivideEquals_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::DivideEquals, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::MinusEquals> MinusEquals_kind_children() const { return Udm::ChildrenAttr< ::GOAL::MinusEquals>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::MinusEquals, Pred> MinusEquals_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::MinusEquals, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::TimesEquals> TimesEquals_kind_children() const { return Udm::ChildrenAttr< ::GOAL::TimesEquals>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::TimesEquals, Pred> TimesEquals_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::TimesEquals, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::AccumulatorBase> AccumulatorBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::AccumulatorBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::AccumulatorBase, Pred> AccumulatorBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::AccumulatorBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Increment> Increment_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Increment>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Increment, Pred> Increment_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Increment, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Decrement> Decrement_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Decrement>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Decrement, Pred> Decrement_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Decrement, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::BooleanOperators> BooleanOperators_kind_children() const { return Udm::ChildrenAttr< ::GOAL::BooleanOperators>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::BooleanOperators, Pred> BooleanOperators_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::BooleanOperators, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::And> And_kind_children() const { return Udm::ChildrenAttr< ::GOAL::And>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::And, Pred> And_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::And, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Or> Or_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Or>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Or, Pred> Or_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Or, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::OutputConnection> OutputConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::OutputConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::OutputConnection, Pred> OutputConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::OutputConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ArrayAssignmentConnection> ArrayAssignmentConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ArrayAssignmentConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ArrayAssignmentConnection, Pred> ArrayAssignmentConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ArrayAssignmentConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::AssignmentRHSConnection> AssignmentRHSConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::AssignmentRHSConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::AssignmentRHSConnection, Pred> AssignmentRHSConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::AssignmentRHSConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ArgumentConnection> ArgumentConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ArgumentConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ArgumentConnection, Pred> ArgumentConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ArgumentConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ControlBase> ControlBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ControlBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ControlBase, Pred> ControlBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ControlBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Const> Const_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Const>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Const, Pred> Const_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Const, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::VariableBase> VariableBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::VariableBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::VariableBase, Pred> VariableBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::VariableBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Variable> Variable_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Variable>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Variable, Pred> Variable_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Variable, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::MgaObject> MgaObject_kind_children() const { return Udm::ChildrenAttr< ::GOAL::MgaObject>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::MgaObject, Pred> MgaObject_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::MgaObject, Pred>(impl, Udm::NULLCHILDROLE); }

			static ::Uml::CompositionParentRole meta_CodeAdapter_parent;
			Udm::ParentAttr< ::GOAL::CodeAdapter> CodeAdapter_parent() const { return Udm::ParentAttr< ::GOAL::CodeAdapter>(impl, meta_CodeAdapter_parent); }

			static ::Uml::CompositionParentRole meta_For_parent;
			Udm::ParentAttr< ::GOAL::For> For_parent() const { return Udm::ParentAttr< ::GOAL::For>(impl, meta_For_parent); }

			static ::Uml::CompositionParentRole meta_While_parent;
			Udm::ParentAttr< ::GOAL::While> While_parent() const { return Udm::ParentAttr< ::GOAL::While>(impl, meta_While_parent); }

			static ::Uml::CompositionParentRole meta_If_parent;
			Udm::ParentAttr< ::GOAL::If> If_parent() const { return Udm::ParentAttr< ::GOAL::If>(impl, meta_If_parent); }

			static ::Uml::CompositionParentRole meta_RootFolder_parent;
			Udm::ParentAttr< ::GOAL::RootFolder> RootFolder_parent() const { return Udm::ParentAttr< ::GOAL::RootFolder>(impl, meta_RootFolder_parent); }

			Udm::ParentAttr<Udm::Object> parent() const { return Udm::ParentAttr<Udm::Object>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_CodeAdapter(*this);};
		};

		class  ModuleAdapter :  public ::GOAL::Adapter {
		public:
			static ::Uml::Class meta;

			ModuleAdapter() { }
			ModuleAdapter(Udm::ObjectImpl *impl) : ::GOAL::Adapter(impl), UDM_OBJECT(impl) { }
			ModuleAdapter(const ModuleAdapter &master) : ::GOAL::Adapter(master), UDM_OBJECT(master) { }
			static ModuleAdapter Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static ModuleAdapter Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			ModuleAdapter CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			ModuleAdapter CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::ModuleAdapter> Instances() { return Udm::InstantiatedAttr< ::GOAL::ModuleAdapter>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::ModuleAdapter, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::ModuleAdapter, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::ModuleAdapter> Derived() { return Udm::DerivedAttr< ::GOAL::ModuleAdapter>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::ModuleAdapter, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::ModuleAdapter, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::ModuleAdapter> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::ModuleAdapter>(impl);}

			static ::Uml::CompositionChildRole meta_Class_children;
			Udm::ChildrenAttr< ::GOAL::Class> Class_children() const { return Udm::ChildrenAttr< ::GOAL::Class>(impl, meta_Class_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::Class, Pred> Class_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Class, Pred>(impl, meta_Class_children); }

			static ::Uml::CompositionChildRole meta_Module_children;
			Udm::ChildrenAttr< ::GOAL::Module> Module_children() const { return Udm::ChildrenAttr< ::GOAL::Module>(impl, meta_Module_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::Module, Pred> Module_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Module, Pred>(impl, meta_Module_children); }

			Udm::ChildrenAttr< ::GOAL::Adapter> Adapter_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Adapter>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Adapter, Pred> Adapter_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Adapter, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Class> Class_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Class>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Class, Pred> Class_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Class, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Module> Module_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Module>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Module, Pred> Module_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Module, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ModuleAdapter> ModuleAdapter_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ModuleAdapter>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ModuleAdapter, Pred> ModuleAdapter_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ModuleAdapter, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ClassAdapter> ClassAdapter_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ClassAdapter>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ClassAdapter, Pred> ClassAdapter_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ClassAdapter, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::MgaObject> MgaObject_kind_children() const { return Udm::ChildrenAttr< ::GOAL::MgaObject>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::MgaObject, Pred> MgaObject_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::MgaObject, Pred>(impl, Udm::NULLCHILDROLE); }

			static ::Uml::CompositionParentRole meta_RootFolder_parent;
			Udm::ParentAttr< ::GOAL::RootFolder> RootFolder_parent() const { return Udm::ParentAttr< ::GOAL::RootFolder>(impl, meta_RootFolder_parent); }

			Udm::ParentAttr< ::GOAL::RootFolder> parent() const { return Udm::ParentAttr< ::GOAL::RootFolder>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_ModuleAdapter(*this);};
		};

		class  Module :  public ::GOAL::ModuleAdapter {
		public:
			static ::Uml::Class meta;

			Module() { }
			Module(Udm::ObjectImpl *impl) : ::GOAL::ModuleAdapter(impl), UDM_OBJECT(impl) { }
			Module(const Module &master) : ::GOAL::ModuleAdapter(master), UDM_OBJECT(master) { }
			static Module Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Module Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Module CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Module CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Module> Instances() { return Udm::InstantiatedAttr< ::GOAL::Module>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Module, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Module, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Module> Derived() { return Udm::DerivedAttr< ::GOAL::Module>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Module, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Module, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Module> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Module>(impl);}

			static ::Uml::CompositionParentRole meta_ModuleAdapter_parent;
			Udm::ParentAttr< ::GOAL::ModuleAdapter> ModuleAdapter_parent() const { return Udm::ParentAttr< ::GOAL::ModuleAdapter>(impl, meta_ModuleAdapter_parent); }

			Udm::ParentAttr<Udm::Object> parent() const { return Udm::ParentAttr<Udm::Object>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_Module(*this);};
		};

		class  ClassAdapter :  public ::GOAL::Adapter {
		public:
			static ::Uml::Class meta;

			ClassAdapter() { }
			ClassAdapter(Udm::ObjectImpl *impl) : ::GOAL::Adapter(impl), UDM_OBJECT(impl) { }
			ClassAdapter(const ClassAdapter &master) : ::GOAL::Adapter(master), UDM_OBJECT(master) { }
			static ClassAdapter Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static ClassAdapter Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			ClassAdapter CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			ClassAdapter CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::ClassAdapter> Instances() { return Udm::InstantiatedAttr< ::GOAL::ClassAdapter>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::ClassAdapter, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::ClassAdapter, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::ClassAdapter> Derived() { return Udm::DerivedAttr< ::GOAL::ClassAdapter>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::ClassAdapter, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::ClassAdapter, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::ClassAdapter> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::ClassAdapter>(impl);}

			static ::Uml::CompositionChildRole meta_ConstBase_children;
			Udm::ChildrenAttr< ::GOAL::ConstBase> ConstBase_children() const { return Udm::ChildrenAttr< ::GOAL::ConstBase>(impl, meta_ConstBase_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::ConstBase, Pred> ConstBase_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ConstBase, Pred>(impl, meta_ConstBase_children); }

			static ::Uml::CompositionChildRole meta_ClassMember_children;
			Udm::ChildrenAttr< ::GOAL::ClassMember> ClassMember_children() const { return Udm::ChildrenAttr< ::GOAL::ClassMember>(impl, meta_ClassMember_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::ClassMember, Pred> ClassMember_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ClassMember, Pred>(impl, meta_ClassMember_children); }

			static ::Uml::CompositionChildRole meta_Class_children;
			Udm::ChildrenAttr< ::GOAL::Class> Class_children() const { return Udm::ChildrenAttr< ::GOAL::Class>(impl, meta_Class_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::Class, Pred> Class_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Class, Pred>(impl, meta_Class_children); }

			static ::Uml::CompositionChildRole meta_Function_children;
			Udm::ChildrenAttr< ::GOAL::Function> Function_children() const { return Udm::ChildrenAttr< ::GOAL::Function>(impl, meta_Function_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::Function, Pred> Function_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Function, Pred>(impl, meta_Function_children); }

			Udm::ChildrenAttr< ::GOAL::Function> Function_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Function>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Function, Pred> Function_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Function, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Adapter> Adapter_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Adapter>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Adapter, Pred> Adapter_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Adapter, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::RightHandSideObject> RightHandSideObject_kind_children() const { return Udm::ChildrenAttr< ::GOAL::RightHandSideObject>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::RightHandSideObject, Pred> RightHandSideObject_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::RightHandSideObject, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Class> Class_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Class>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Class, Pred> Class_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Class, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ClassAdapter> ClassAdapter_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ClassAdapter>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ClassAdapter, Pred> ClassAdapter_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ClassAdapter, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ConstBase> ConstBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ConstBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ConstBase, Pred> ConstBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ConstBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Const> Const_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Const>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Const, Pred> Const_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Const, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ClassMember> ClassMember_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ClassMember>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ClassMember, Pred> ClassMember_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ClassMember, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::MgaObject> MgaObject_kind_children() const { return Udm::ChildrenAttr< ::GOAL::MgaObject>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::MgaObject, Pred> MgaObject_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::MgaObject, Pred>(impl, Udm::NULLCHILDROLE); }

			static ::Uml::CompositionParentRole meta_RootFolder_parent;
			Udm::ParentAttr< ::GOAL::RootFolder> RootFolder_parent() const { return Udm::ParentAttr< ::GOAL::RootFolder>(impl, meta_RootFolder_parent); }

			Udm::ParentAttr< ::GOAL::RootFolder> parent() const { return Udm::ParentAttr< ::GOAL::RootFolder>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_ClassAdapter(*this);};
		};

		class  Class :  public ::GOAL::ClassAdapter {
		public:
			static ::Uml::Class meta;

			Class() { }
			Class(Udm::ObjectImpl *impl) : ::GOAL::ClassAdapter(impl), UDM_OBJECT(impl) { }
			Class(const Class &master) : ::GOAL::ClassAdapter(master), UDM_OBJECT(master) { }
			static Class Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Class Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Class CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Class CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Class> Instances() { return Udm::InstantiatedAttr< ::GOAL::Class>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Class, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Class, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Class> Derived() { return Udm::DerivedAttr< ::GOAL::Class>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Class, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Class, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Class> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Class>(impl);}

			static ::Uml::Attribute meta_ValueFormat;
			Udm::StringAttr ValueFormat() const { return Udm::StringAttr(impl, meta_ValueFormat); }

			static ::Uml::Attribute meta_accessibility;
			Udm::StringAttr accessibility() const { return Udm::StringAttr(impl, meta_accessibility); }

			static ::Uml::AssociationRole meta_referedbyClassRef;
			Udm::AssocAttr< ::GOAL::ClassRef> referedbyClassRef() const { return Udm::AssocAttr< ::GOAL::ClassRef>(impl, meta_referedbyClassRef); }
			template <class Pred> Udm::AssocAttr< ::GOAL::ClassRef, Pred > referedbyClassRef_sorted(const Pred &) const { return Udm::AssocAttr< ::GOAL::ClassRef, Pred>(impl, meta_referedbyClassRef); }

			static ::Uml::CompositionParentRole meta_ClassAdapter_parent;
			Udm::ParentAttr< ::GOAL::ClassAdapter> ClassAdapter_parent() const { return Udm::ParentAttr< ::GOAL::ClassAdapter>(impl, meta_ClassAdapter_parent); }

			static ::Uml::CompositionParentRole meta_ModuleAdapter_parent;
			Udm::ParentAttr< ::GOAL::ModuleAdapter> ModuleAdapter_parent() const { return Udm::ParentAttr< ::GOAL::ModuleAdapter>(impl, meta_ModuleAdapter_parent); }

			Udm::ParentAttr<Udm::Object> parent() const { return Udm::ParentAttr<Udm::Object>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_Class(*this);};
		};

		class  Not :  public ::GOAL::UnaryOperator {
		public:
			static ::Uml::Class meta;

			Not() { }
			Not(Udm::ObjectImpl *impl) : ::GOAL::UnaryOperator(impl), UDM_OBJECT(impl) { }
			Not(const Not &master) : ::GOAL::UnaryOperator(master), UDM_OBJECT(master) { }
			static Not Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Not Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Not CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Not CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Not> Instances() { return Udm::InstantiatedAttr< ::GOAL::Not>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Not, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Not, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Not> Derived() { return Udm::DerivedAttr< ::GOAL::Not>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Not, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Not, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Not> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Not>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_Not(*this);};
		};

		class  ConditionsAdapter :  public ::GOAL::Adapter {
		public:
			static ::Uml::Class meta;

			ConditionsAdapter() { }
			ConditionsAdapter(Udm::ObjectImpl *impl) : ::GOAL::Adapter(impl), UDM_OBJECT(impl) { }
			ConditionsAdapter(const ConditionsAdapter &master) : ::GOAL::Adapter(master), UDM_OBJECT(master) { }
			static ConditionsAdapter Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static ConditionsAdapter Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			ConditionsAdapter CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			ConditionsAdapter CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::ConditionsAdapter> Instances() { return Udm::InstantiatedAttr< ::GOAL::ConditionsAdapter>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::ConditionsAdapter, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::ConditionsAdapter, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::ConditionsAdapter> Derived() { return Udm::DerivedAttr< ::GOAL::ConditionsAdapter>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::ConditionsAdapter, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::ConditionsAdapter, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::ConditionsAdapter> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::ConditionsAdapter>(impl);}

			static ::Uml::CompositionChildRole meta_IndexOperator_children;
			Udm::ChildrenAttr< ::GOAL::IndexOperator> IndexOperator_children() const { return Udm::ChildrenAttr< ::GOAL::IndexOperator>(impl, meta_IndexOperator_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::IndexOperator, Pred> IndexOperator_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::IndexOperator, Pred>(impl, meta_IndexOperator_children); }

			static ::Uml::CompositionChildRole meta_BooleanOperators_children;
			Udm::ChildrenAttr< ::GOAL::BooleanOperators> BooleanOperators_children() const { return Udm::ChildrenAttr< ::GOAL::BooleanOperators>(impl, meta_BooleanOperators_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::BooleanOperators, Pred> BooleanOperators_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::BooleanOperators, Pred>(impl, meta_BooleanOperators_children); }

			static ::Uml::CompositionChildRole meta_CommonConnection_children;
			Udm::ChildrenAttr< ::GOAL::CommonConnection> CommonConnection_children() const { return Udm::ChildrenAttr< ::GOAL::CommonConnection>(impl, meta_CommonConnection_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::CommonConnection, Pred> CommonConnection_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::CommonConnection, Pred>(impl, meta_CommonConnection_children); }

			static ::Uml::CompositionChildRole meta_ConstBase_children;
			Udm::ChildrenAttr< ::GOAL::ConstBase> ConstBase_children() const { return Udm::ChildrenAttr< ::GOAL::ConstBase>(impl, meta_ConstBase_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::ConstBase, Pred> ConstBase_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ConstBase, Pred>(impl, meta_ConstBase_children); }

			static ::Uml::CompositionChildRole meta_Variable_children;
			Udm::ChildrenAttr< ::GOAL::Variable> Variable_children() const { return Udm::ChildrenAttr< ::GOAL::Variable>(impl, meta_Variable_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::Variable, Pred> Variable_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Variable, Pred>(impl, meta_Variable_children); }

			static ::Uml::CompositionChildRole meta_FunctionCall_children;
			Udm::ChildrenAttr< ::GOAL::FunctionCall> FunctionCall_children() const { return Udm::ChildrenAttr< ::GOAL::FunctionCall>(impl, meta_FunctionCall_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::FunctionCall, Pred> FunctionCall_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::FunctionCall, Pred>(impl, meta_FunctionCall_children); }

			static ::Uml::CompositionChildRole meta_Input_children;
			Udm::ChildrenAttr< ::GOAL::Input> Input_children() const { return Udm::ChildrenAttr< ::GOAL::Input>(impl, meta_Input_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::Input, Pred> Input_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Input, Pred>(impl, meta_Input_children); }

			static ::Uml::CompositionChildRole meta_InputOutput_children;
			Udm::ChildrenAttr< ::GOAL::InputOutput> InputOutput_children() const { return Udm::ChildrenAttr< ::GOAL::InputOutput>(impl, meta_InputOutput_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::InputOutput, Pred> InputOutput_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::InputOutput, Pred>(impl, meta_InputOutput_children); }

			static ::Uml::CompositionChildRole meta_UnaryOperator_children;
			Udm::ChildrenAttr< ::GOAL::UnaryOperator> UnaryOperator_children() const { return Udm::ChildrenAttr< ::GOAL::UnaryOperator>(impl, meta_UnaryOperator_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::UnaryOperator, Pred> UnaryOperator_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::UnaryOperator, Pred>(impl, meta_UnaryOperator_children); }

			static ::Uml::CompositionChildRole meta_BinaryOperator_children;
			Udm::ChildrenAttr< ::GOAL::BinaryOperator> BinaryOperator_children() const { return Udm::ChildrenAttr< ::GOAL::BinaryOperator>(impl, meta_BinaryOperator_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::BinaryOperator, Pred> BinaryOperator_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::BinaryOperator, Pred>(impl, meta_BinaryOperator_children); }

			Udm::ChildrenAttr< ::GOAL::VariableRef_RefersTo_Base> VariableRef_RefersTo_Base_kind_children() const { return Udm::ChildrenAttr< ::GOAL::VariableRef_RefersTo_Base>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::VariableRef_RefersTo_Base, Pred> VariableRef_RefersTo_Base_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::VariableRef_RefersTo_Base, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::UnaryOperator> UnaryOperator_kind_children() const { return Udm::ChildrenAttr< ::GOAL::UnaryOperator>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::UnaryOperator, Pred> UnaryOperator_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::UnaryOperator, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::BinaryOperator> BinaryOperator_kind_children() const { return Udm::ChildrenAttr< ::GOAL::BinaryOperator>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::BinaryOperator, Pred> BinaryOperator_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::BinaryOperator, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Plus> Plus_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Plus>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Plus, Pred> Plus_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Plus, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Divide> Divide_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Divide>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Divide, Pred> Divide_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Divide, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Times> Times_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Times>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Times, Pred> Times_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Times, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Minus> Minus_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Minus>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Minus, Pred> Minus_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Minus, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Modulus> Modulus_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Modulus>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Modulus, Pred> Modulus_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Modulus, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::CommonConnection> CommonConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::CommonConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::CommonConnection, Pred> CommonConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::CommonConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::RightHandSideObject> RightHandSideObject_kind_children() const { return Udm::ChildrenAttr< ::GOAL::RightHandSideObject>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::RightHandSideObject, Pred> RightHandSideObject_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::RightHandSideObject, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::FunctionCall> FunctionCall_kind_children() const { return Udm::ChildrenAttr< ::GOAL::FunctionCall>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::FunctionCall, Pred> FunctionCall_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::FunctionCall, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Not> Not_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Not>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Not, Pred> Not_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Not, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::File> File_kind_children() const { return Udm::ChildrenAttr< ::GOAL::File>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::File, Pred> File_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::File, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Keyboard> Keyboard_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Keyboard>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Keyboard, Pred> Keyboard_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Keyboard, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::AssignmentConnection> AssignmentConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::AssignmentConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::AssignmentConnection, Pred> AssignmentConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::AssignmentConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ConstBase> ConstBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ConstBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ConstBase, Pred> ConstBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ConstBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Brackets> Brackets_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Brackets>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Brackets, Pred> Brackets_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Brackets, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::IOBase> IOBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::IOBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::IOBase, Pred> IOBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::IOBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Input> Input_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Input>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Input, Pred> Input_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Input, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::IndexOperator> IndexOperator_kind_children() const { return Udm::ChildrenAttr< ::GOAL::IndexOperator>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::IndexOperator, Pred> IndexOperator_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::IndexOperator, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::IndexConnection> IndexConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::IndexConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::IndexConnection, Pred> IndexConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::IndexConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::NonModifyingConnection> NonModifyingConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::NonModifyingConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::NonModifyingConnection, Pred> NonModifyingConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::NonModifyingConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::InputOutput> InputOutput_kind_children() const { return Udm::ChildrenAttr< ::GOAL::InputOutput>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::InputOutput, Pred> InputOutput_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::InputOutput, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::BooleanOperators> BooleanOperators_kind_children() const { return Udm::ChildrenAttr< ::GOAL::BooleanOperators>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::BooleanOperators, Pred> BooleanOperators_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::BooleanOperators, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::And> And_kind_children() const { return Udm::ChildrenAttr< ::GOAL::And>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::And, Pred> And_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::And, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Or> Or_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Or>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Or, Pred> Or_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Or, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::OutputConnection> OutputConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::OutputConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::OutputConnection, Pred> OutputConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::OutputConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ArrayAssignmentConnection> ArrayAssignmentConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ArrayAssignmentConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ArrayAssignmentConnection, Pred> ArrayAssignmentConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ArrayAssignmentConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::AssignmentRHSConnection> AssignmentRHSConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::AssignmentRHSConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::AssignmentRHSConnection, Pred> AssignmentRHSConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::AssignmentRHSConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ArgumentConnection> ArgumentConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ArgumentConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ArgumentConnection, Pred> ArgumentConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ArgumentConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Const> Const_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Const>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Const, Pred> Const_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Const, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::VariableBase> VariableBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::VariableBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::VariableBase, Pred> VariableBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::VariableBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Variable> Variable_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Variable>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Variable, Pred> Variable_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Variable, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::MgaObject> MgaObject_kind_children() const { return Udm::ChildrenAttr< ::GOAL::MgaObject>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::MgaObject, Pred> MgaObject_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::MgaObject, Pred>(impl, Udm::NULLCHILDROLE); }

			static ::Uml::CompositionParentRole meta_While_parent;
			Udm::ParentAttr< ::GOAL::While> While_parent() const { return Udm::ParentAttr< ::GOAL::While>(impl, meta_While_parent); }

			static ::Uml::CompositionParentRole meta_For_parent;
			Udm::ParentAttr< ::GOAL::For> For_parent() const { return Udm::ParentAttr< ::GOAL::For>(impl, meta_For_parent); }

			static ::Uml::CompositionParentRole meta_If_parent;
			Udm::ParentAttr< ::GOAL::If> If_parent() const { return Udm::ParentAttr< ::GOAL::If>(impl, meta_If_parent); }

			static ::Uml::CompositionParentRole meta_RootFolder_parent;
			Udm::ParentAttr< ::GOAL::RootFolder> RootFolder_parent() const { return Udm::ParentAttr< ::GOAL::RootFolder>(impl, meta_RootFolder_parent); }

			Udm::ParentAttr<Udm::Object> parent() const { return Udm::ParentAttr<Udm::Object>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_ConditionsAdapter(*this);};
		};

		class  InfixOperators :  public ::GOAL::MgaObject {
		public:
			static ::Uml::Class meta;

			InfixOperators() { }
			InfixOperators(Udm::ObjectImpl *impl) : ::GOAL::MgaObject(impl), UDM_OBJECT(impl) { }
			InfixOperators(const InfixOperators &master) : ::GOAL::MgaObject(master), UDM_OBJECT(master) { }
			static InfixOperators Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static InfixOperators Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			InfixOperators CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			InfixOperators CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::InfixOperators> Instances() { return Udm::InstantiatedAttr< ::GOAL::InfixOperators>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::InfixOperators, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::InfixOperators, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::InfixOperators> Derived() { return Udm::DerivedAttr< ::GOAL::InfixOperators>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::InfixOperators, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::InfixOperators, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::InfixOperators> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::InfixOperators>(impl);}

			static ::Uml::AssociationRole meta_srcAssignmentRHSConnection;
			static ::Uml::AssociationRole meta_srcAssignmentRHSConnection_rev;
			Udm::AClassAssocAttr< ::GOAL::AssignmentRHSConnection, ::GOAL::RightHandSideObject> srcAssignmentRHSConnection() const { return Udm::AClassAssocAttr< ::GOAL::AssignmentRHSConnection, ::GOAL::RightHandSideObject>(impl, meta_srcAssignmentRHSConnection, meta_srcAssignmentRHSConnection_rev); }
			template<class Pred> Udm::AClassAssocAttr< ::GOAL::AssignmentRHSConnection, ::GOAL::RightHandSideObject, Pred> srcAssignmentRHSConnection_sorted(const Pred &) const { return Udm::AClassAssocAttr< ::GOAL::AssignmentRHSConnection, ::GOAL::RightHandSideObject, Pred>(impl, meta_srcAssignmentRHSConnection, meta_srcAssignmentRHSConnection_rev); }

			static ::Uml::AssociationRole meta_dstAssignmentConnection;
			static ::Uml::AssociationRole meta_dstAssignmentConnection_rev;
			Udm::AClassAssocAttr< ::GOAL::AssignmentConnection, ::GOAL::VariableBase> dstAssignmentConnection() const { return Udm::AClassAssocAttr< ::GOAL::AssignmentConnection, ::GOAL::VariableBase>(impl, meta_dstAssignmentConnection, meta_dstAssignmentConnection_rev); }
			template<class Pred> Udm::AClassAssocAttr< ::GOAL::AssignmentConnection, ::GOAL::VariableBase, Pred> dstAssignmentConnection_sorted(const Pred &) const { return Udm::AClassAssocAttr< ::GOAL::AssignmentConnection, ::GOAL::VariableBase, Pred>(impl, meta_dstAssignmentConnection, meta_dstAssignmentConnection_rev); }

			static ::Uml::AssociationRole meta_dstOutputConnection;
			static ::Uml::AssociationRole meta_dstOutputConnection_rev;
			Udm::AClassAssocAttr< ::GOAL::OutputConnection, ::GOAL::Output> dstOutputConnection() const { return Udm::AClassAssocAttr< ::GOAL::OutputConnection, ::GOAL::Output>(impl, meta_dstOutputConnection, meta_dstOutputConnection_rev); }
			template<class Pred> Udm::AClassAssocAttr< ::GOAL::OutputConnection, ::GOAL::Output, Pred> dstOutputConnection_sorted(const Pred &) const { return Udm::AClassAssocAttr< ::GOAL::OutputConnection, ::GOAL::Output, Pred>(impl, meta_dstOutputConnection, meta_dstOutputConnection_rev); }

			static ::Uml::AssociationRole meta_dstArrayAssignmentConnection;
			static ::Uml::AssociationRole meta_dstArrayAssignmentConnection_rev;
			Udm::AClassAssocAttr< ::GOAL::ArrayAssignmentConnection, ::GOAL::IndexOperator> dstArrayAssignmentConnection() const { return Udm::AClassAssocAttr< ::GOAL::ArrayAssignmentConnection, ::GOAL::IndexOperator>(impl, meta_dstArrayAssignmentConnection, meta_dstArrayAssignmentConnection_rev); }
			template<class Pred> Udm::AClassAssocAttr< ::GOAL::ArrayAssignmentConnection, ::GOAL::IndexOperator, Pred> dstArrayAssignmentConnection_sorted(const Pred &) const { return Udm::AClassAssocAttr< ::GOAL::ArrayAssignmentConnection, ::GOAL::IndexOperator, Pred>(impl, meta_dstArrayAssignmentConnection, meta_dstArrayAssignmentConnection_rev); }

			static ::Uml::CompositionParentRole meta_Function_parent;
			Udm::ParentAttr< ::GOAL::Function> Function_parent() const { return Udm::ParentAttr< ::GOAL::Function>(impl, meta_Function_parent); }

			static ::Uml::CompositionParentRole meta_CodeAdapter_parent;
			Udm::ParentAttr< ::GOAL::CodeAdapter> CodeAdapter_parent() const { return Udm::ParentAttr< ::GOAL::CodeAdapter>(impl, meta_CodeAdapter_parent); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
		};

		class  Assignment :  public ::GOAL::InfixOperators {
		public:
			static ::Uml::Class meta;

			Assignment() { }
			Assignment(Udm::ObjectImpl *impl) : ::GOAL::InfixOperators(impl), UDM_OBJECT(impl) { }
			Assignment(const Assignment &master) : ::GOAL::InfixOperators(master), UDM_OBJECT(master) { }
			static Assignment Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Assignment Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Assignment CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Assignment CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Assignment> Instances() { return Udm::InstantiatedAttr< ::GOAL::Assignment>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Assignment, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Assignment, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Assignment> Derived() { return Udm::DerivedAttr< ::GOAL::Assignment>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Assignment, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Assignment, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Assignment> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Assignment>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_Assignment(*this);};
		};

		class  AssignmentConnection :  public ::GOAL::CommonConnection {
		public:
			static ::Uml::Class meta;

			AssignmentConnection() { }
			AssignmentConnection(Udm::ObjectImpl *impl) : ::GOAL::CommonConnection(impl), UDM_OBJECT(impl) { }
			AssignmentConnection(const AssignmentConnection &master) : ::GOAL::CommonConnection(master), UDM_OBJECT(master) { }
			static AssignmentConnection Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static AssignmentConnection Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			AssignmentConnection CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			AssignmentConnection CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::AssignmentConnection> Instances() { return Udm::InstantiatedAttr< ::GOAL::AssignmentConnection>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::AssignmentConnection, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::AssignmentConnection, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::AssignmentConnection> Derived() { return Udm::DerivedAttr< ::GOAL::AssignmentConnection>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::AssignmentConnection, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::AssignmentConnection, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::AssignmentConnection> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::AssignmentConnection>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			static ::Uml::AssociationRole meta_srcAssignmentConnection_end_;
			Udm::AssocEndAttr< ::GOAL::InfixOperators> srcAssignmentConnection_end() const { return Udm::AssocEndAttr< ::GOAL::InfixOperators>(impl, meta_srcAssignmentConnection_end_); }

			static ::Uml::AssociationRole meta_dstAssignmentConnection_end_;
			Udm::AssocEndAttr< ::GOAL::VariableBase> dstAssignmentConnection_end() const { return Udm::AssocEndAttr< ::GOAL::VariableBase>(impl, meta_dstAssignmentConnection_end_); }

			virtual void Accept(Visitor &v){v.Visit_AssignmentConnection(*this);};
		};

		class  ConstBase :  public ::GOAL::RightHandSideObject {
		public:
			static ::Uml::Class meta;

			ConstBase() { }
			ConstBase(Udm::ObjectImpl *impl) : ::GOAL::RightHandSideObject(impl), UDM_OBJECT(impl) { }
			ConstBase(const ConstBase &master) : ::GOAL::RightHandSideObject(master), UDM_OBJECT(master) { }
			static ConstBase Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static ConstBase Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			ConstBase CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			ConstBase CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::ConstBase> Instances() { return Udm::InstantiatedAttr< ::GOAL::ConstBase>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::ConstBase, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::ConstBase, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::ConstBase> Derived() { return Udm::DerivedAttr< ::GOAL::ConstBase>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::ConstBase, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::ConstBase, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::ConstBase> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::ConstBase>(impl);}

			static ::Uml::Attribute meta_accessibility;
			Udm::StringAttr accessibility() const { return Udm::StringAttr(impl, meta_accessibility); }

			static ::Uml::CompositionParentRole meta_Function_parent;
			Udm::ParentAttr< ::GOAL::Function> Function_parent() const { return Udm::ParentAttr< ::GOAL::Function>(impl, meta_Function_parent); }

			static ::Uml::CompositionParentRole meta_CodeAdapter_parent;
			Udm::ParentAttr< ::GOAL::CodeAdapter> CodeAdapter_parent() const { return Udm::ParentAttr< ::GOAL::CodeAdapter>(impl, meta_CodeAdapter_parent); }

			static ::Uml::CompositionParentRole meta_ClassAdapter_parent;
			Udm::ParentAttr< ::GOAL::ClassAdapter> ClassAdapter_parent() const { return Udm::ParentAttr< ::GOAL::ClassAdapter>(impl, meta_ClassAdapter_parent); }

			static ::Uml::CompositionParentRole meta_ConditionsAdapter_parent;
			Udm::ParentAttr< ::GOAL::ConditionsAdapter> ConditionsAdapter_parent() const { return Udm::ParentAttr< ::GOAL::ConditionsAdapter>(impl, meta_ConditionsAdapter_parent); }

			static ::Uml::CompositionParentRole meta_IndexOperator_parent;
			Udm::ParentAttr< ::GOAL::IndexOperator> IndexOperator_parent() const { return Udm::ParentAttr< ::GOAL::IndexOperator>(impl, meta_IndexOperator_parent); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
		};

		class  ComposableBase :  public ::GOAL::MgaObject {
		public:
			static ::Uml::Class meta;

			ComposableBase() { }
			ComposableBase(Udm::ObjectImpl *impl) : ::GOAL::MgaObject(impl), UDM_OBJECT(impl) { }
			ComposableBase(const ComposableBase &master) : ::GOAL::MgaObject(master), UDM_OBJECT(master) { }
			static ComposableBase Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static ComposableBase Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			ComposableBase CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			ComposableBase CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::ComposableBase> Instances() { return Udm::InstantiatedAttr< ::GOAL::ComposableBase>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::ComposableBase, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::ComposableBase, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::ComposableBase> Derived() { return Udm::DerivedAttr< ::GOAL::ComposableBase>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::ComposableBase, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::ComposableBase, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::ComposableBase> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::ComposableBase>(impl);}

			static ::Uml::CompositionParentRole meta_Return_parent;
			Udm::ParentAttr< ::GOAL::Return> Return_parent() const { return Udm::ParentAttr< ::GOAL::Return>(impl, meta_Return_parent); }

			static ::Uml::CompositionParentRole meta_Array_parent;
			Udm::ParentAttr< ::GOAL::Array> Array_parent() const { return Udm::ParentAttr< ::GOAL::Array>(impl, meta_Array_parent); }

			static ::Uml::CompositionParentRole meta_Argument_parent;
			Udm::ParentAttr< ::GOAL::Argument> Argument_parent() const { return Udm::ParentAttr< ::GOAL::Argument>(impl, meta_Argument_parent); }

			static ::Uml::CompositionParentRole meta_Const_parent;
			Udm::ParentAttr< ::GOAL::Const> Const_parent() const { return Udm::ParentAttr< ::GOAL::Const>(impl, meta_Const_parent); }

			static ::Uml::CompositionParentRole meta_VariableBase_parent;
			Udm::ParentAttr< ::GOAL::VariableBase> VariableBase_parent() const { return Udm::ParentAttr< ::GOAL::VariableBase>(impl, meta_VariableBase_parent); }

			static ::Uml::CompositionParentRole meta_ClassMember_parent;
			Udm::ParentAttr< ::GOAL::ClassMember> ClassMember_parent() const { return Udm::ParentAttr< ::GOAL::ClassMember>(impl, meta_ClassMember_parent); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
		};

		class  IOBase :  public ::GOAL::MgaObject {
		public:
			static ::Uml::Class meta;

			IOBase() { }
			IOBase(Udm::ObjectImpl *impl) : ::GOAL::MgaObject(impl), UDM_OBJECT(impl) { }
			IOBase(const IOBase &master) : ::GOAL::MgaObject(master), UDM_OBJECT(master) { }
			static IOBase Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static IOBase Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			IOBase CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			IOBase CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::IOBase> Instances() { return Udm::InstantiatedAttr< ::GOAL::IOBase>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::IOBase, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::IOBase, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::IOBase> Derived() { return Udm::DerivedAttr< ::GOAL::IOBase>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::IOBase, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::IOBase, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::IOBase> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::IOBase>(impl);}

			static ::Uml::CompositionParentRole meta_Function_parent;
			Udm::ParentAttr< ::GOAL::Function> Function_parent() const { return Udm::ParentAttr< ::GOAL::Function>(impl, meta_Function_parent); }

			static ::Uml::CompositionParentRole meta_CodeAdapter_parent;
			Udm::ParentAttr< ::GOAL::CodeAdapter> CodeAdapter_parent() const { return Udm::ParentAttr< ::GOAL::CodeAdapter>(impl, meta_CodeAdapter_parent); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
		};

		class  Output :  public ::GOAL::IOBase {
		public:
			static ::Uml::Class meta;

			Output() { }
			Output(Udm::ObjectImpl *impl) : ::GOAL::IOBase(impl), UDM_OBJECT(impl) { }
			Output(const Output &master) : ::GOAL::IOBase(master), UDM_OBJECT(master) { }
			static Output Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Output Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Output CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Output CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Output> Instances() { return Udm::InstantiatedAttr< ::GOAL::Output>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Output, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Output, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Output> Derived() { return Udm::DerivedAttr< ::GOAL::Output>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Output, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Output, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Output> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Output>(impl);}

			static ::Uml::AssociationRole meta_srcOutputConnection;
			static ::Uml::AssociationRole meta_srcOutputConnection_rev;
			Udm::AClassAssocAttr< ::GOAL::OutputConnection, ::GOAL::InfixOperators> srcOutputConnection() const { return Udm::AClassAssocAttr< ::GOAL::OutputConnection, ::GOAL::InfixOperators>(impl, meta_srcOutputConnection, meta_srcOutputConnection_rev); }
			template<class Pred> Udm::AClassAssocAttr< ::GOAL::OutputConnection, ::GOAL::InfixOperators, Pred> srcOutputConnection_sorted(const Pred &) const { return Udm::AClassAssocAttr< ::GOAL::OutputConnection, ::GOAL::InfixOperators, Pred>(impl, meta_srcOutputConnection, meta_srcOutputConnection_rev); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
		};

		class  Console :  public ::GOAL::Output {
		public:
			static ::Uml::Class meta;

			Console() { }
			Console(Udm::ObjectImpl *impl) : ::GOAL::Output(impl), UDM_OBJECT(impl) { }
			Console(const Console &master) : ::GOAL::Output(master), UDM_OBJECT(master) { }
			static Console Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Console Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Console CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Console CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Console> Instances() { return Udm::InstantiatedAttr< ::GOAL::Console>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Console, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Console, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Console> Derived() { return Udm::DerivedAttr< ::GOAL::Console>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Console, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Console, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Console> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Console>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_Console(*this);};
		};

		class  Input :  public ::GOAL::IOBase {
		public:
			static ::Uml::Class meta;

			Input() { }
			Input(Udm::ObjectImpl *impl) : ::GOAL::IOBase(impl), UDM_OBJECT(impl) { }
			Input(const Input &master) : ::GOAL::IOBase(master), UDM_OBJECT(master) { }
			static Input Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Input Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Input CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Input CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Input> Instances() { return Udm::InstantiatedAttr< ::GOAL::Input>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Input, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Input, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Input> Derived() { return Udm::DerivedAttr< ::GOAL::Input>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Input, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Input, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Input> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Input>(impl);}

			static ::Uml::CompositionParentRole meta_ConditionsAdapter_parent;
			Udm::ParentAttr< ::GOAL::ConditionsAdapter> ConditionsAdapter_parent() const { return Udm::ParentAttr< ::GOAL::ConditionsAdapter>(impl, meta_ConditionsAdapter_parent); }

			static ::Uml::CompositionParentRole meta_IndexOperator_parent;
			Udm::ParentAttr< ::GOAL::IndexOperator> IndexOperator_parent() const { return Udm::ParentAttr< ::GOAL::IndexOperator>(impl, meta_IndexOperator_parent); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
		};

		class  Keyboard :  public ::GOAL::Input {
		public:
			static ::Uml::Class meta;

			Keyboard() { }
			Keyboard(Udm::ObjectImpl *impl) : ::GOAL::Input(impl), UDM_OBJECT(impl) { }
			Keyboard(const Keyboard &master) : ::GOAL::Input(master), UDM_OBJECT(master) { }
			static Keyboard Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Keyboard Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Keyboard CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Keyboard CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Keyboard> Instances() { return Udm::InstantiatedAttr< ::GOAL::Keyboard>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Keyboard, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Keyboard, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Keyboard> Derived() { return Udm::DerivedAttr< ::GOAL::Keyboard>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Keyboard, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Keyboard, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Keyboard> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Keyboard>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_Keyboard(*this);};
		};

		class  IndexOperator :  public ::GOAL::RightHandSideObject {
		public:
			static ::Uml::Class meta;

			IndexOperator() { }
			IndexOperator(Udm::ObjectImpl *impl) : ::GOAL::RightHandSideObject(impl), UDM_OBJECT(impl) { }
			IndexOperator(const IndexOperator &master) : ::GOAL::RightHandSideObject(master), UDM_OBJECT(master) { }
			static IndexOperator Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static IndexOperator Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			IndexOperator CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			IndexOperator CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::IndexOperator> Instances() { return Udm::InstantiatedAttr< ::GOAL::IndexOperator>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::IndexOperator, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::IndexOperator, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::IndexOperator> Derived() { return Udm::DerivedAttr< ::GOAL::IndexOperator>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::IndexOperator, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::IndexOperator, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::IndexOperator> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::IndexOperator>(impl);}

			static ::Uml::AssociationRole meta_srcArrayAssignmentConnection;
			static ::Uml::AssociationRole meta_srcArrayAssignmentConnection_rev;
			Udm::AClassAssocAttr< ::GOAL::ArrayAssignmentConnection, ::GOAL::InfixOperators> srcArrayAssignmentConnection() const { return Udm::AClassAssocAttr< ::GOAL::ArrayAssignmentConnection, ::GOAL::InfixOperators>(impl, meta_srcArrayAssignmentConnection, meta_srcArrayAssignmentConnection_rev); }
			template<class Pred> Udm::AClassAssocAttr< ::GOAL::ArrayAssignmentConnection, ::GOAL::InfixOperators, Pred> srcArrayAssignmentConnection_sorted(const Pred &) const { return Udm::AClassAssocAttr< ::GOAL::ArrayAssignmentConnection, ::GOAL::InfixOperators, Pred>(impl, meta_srcArrayAssignmentConnection, meta_srcArrayAssignmentConnection_rev); }

			static ::Uml::AssociationRole meta_srcIndexConnection;
			static ::Uml::AssociationRole meta_srcIndexConnection_rev;
			Udm::AClassAssocAttr< ::GOAL::IndexConnection, ::GOAL::VariableBase> srcIndexConnection() const { return Udm::AClassAssocAttr< ::GOAL::IndexConnection, ::GOAL::VariableBase>(impl, meta_srcIndexConnection, meta_srcIndexConnection_rev); }
			template<class Pred> Udm::AClassAssocAttr< ::GOAL::IndexConnection, ::GOAL::VariableBase, Pred> srcIndexConnection_sorted(const Pred &) const { return Udm::AClassAssocAttr< ::GOAL::IndexConnection, ::GOAL::VariableBase, Pred>(impl, meta_srcIndexConnection, meta_srcIndexConnection_rev); }

			static ::Uml::CompositionChildRole meta_BooleanOperators_children;
			Udm::ChildrenAttr< ::GOAL::BooleanOperators> BooleanOperators_children() const { return Udm::ChildrenAttr< ::GOAL::BooleanOperators>(impl, meta_BooleanOperators_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::BooleanOperators, Pred> BooleanOperators_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::BooleanOperators, Pred>(impl, meta_BooleanOperators_children); }

			static ::Uml::CompositionChildRole meta_Input_children;
			Udm::ChildrenAttr< ::GOAL::Input> Input_children() const { return Udm::ChildrenAttr< ::GOAL::Input>(impl, meta_Input_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::Input, Pred> Input_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Input, Pred>(impl, meta_Input_children); }

			static ::Uml::CompositionChildRole meta_UnaryOperator_children;
			Udm::ChildrenAttr< ::GOAL::UnaryOperator> UnaryOperator_children() const { return Udm::ChildrenAttr< ::GOAL::UnaryOperator>(impl, meta_UnaryOperator_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::UnaryOperator, Pred> UnaryOperator_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::UnaryOperator, Pred>(impl, meta_UnaryOperator_children); }

			static ::Uml::CompositionChildRole meta_BinaryOperator_children;
			Udm::ChildrenAttr< ::GOAL::BinaryOperator> BinaryOperator_children() const { return Udm::ChildrenAttr< ::GOAL::BinaryOperator>(impl, meta_BinaryOperator_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::BinaryOperator, Pred> BinaryOperator_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::BinaryOperator, Pred>(impl, meta_BinaryOperator_children); }

			static ::Uml::CompositionChildRole meta_IndexOperator_children;
			Udm::ChildrenAttr< ::GOAL::IndexOperator> IndexOperator_children() const { return Udm::ChildrenAttr< ::GOAL::IndexOperator>(impl, meta_IndexOperator_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::IndexOperator, Pred> IndexOperator_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::IndexOperator, Pred>(impl, meta_IndexOperator_children); }

			static ::Uml::CompositionChildRole meta_Variable_children;
			Udm::ChildrenAttr< ::GOAL::Variable> Variable_children() const { return Udm::ChildrenAttr< ::GOAL::Variable>(impl, meta_Variable_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::Variable, Pred> Variable_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Variable, Pred>(impl, meta_Variable_children); }

			static ::Uml::CompositionChildRole meta_ConstBase_children;
			Udm::ChildrenAttr< ::GOAL::ConstBase> ConstBase_children() const { return Udm::ChildrenAttr< ::GOAL::ConstBase>(impl, meta_ConstBase_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::ConstBase, Pred> ConstBase_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ConstBase, Pred>(impl, meta_ConstBase_children); }

			static ::Uml::CompositionChildRole meta_CommonConnection_children;
			Udm::ChildrenAttr< ::GOAL::CommonConnection> CommonConnection_children() const { return Udm::ChildrenAttr< ::GOAL::CommonConnection>(impl, meta_CommonConnection_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::CommonConnection, Pred> CommonConnection_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::CommonConnection, Pred>(impl, meta_CommonConnection_children); }

			static ::Uml::CompositionChildRole meta_FunctionCall_children;
			Udm::ChildrenAttr< ::GOAL::FunctionCall> FunctionCall_children() const { return Udm::ChildrenAttr< ::GOAL::FunctionCall>(impl, meta_FunctionCall_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::FunctionCall, Pred> FunctionCall_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::FunctionCall, Pred>(impl, meta_FunctionCall_children); }

			static ::Uml::CompositionChildRole meta_InputOutput_children;
			Udm::ChildrenAttr< ::GOAL::InputOutput> InputOutput_children() const { return Udm::ChildrenAttr< ::GOAL::InputOutput>(impl, meta_InputOutput_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::InputOutput, Pred> InputOutput_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::InputOutput, Pred>(impl, meta_InputOutput_children); }

			Udm::ChildrenAttr< ::GOAL::VariableRef_RefersTo_Base> VariableRef_RefersTo_Base_kind_children() const { return Udm::ChildrenAttr< ::GOAL::VariableRef_RefersTo_Base>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::VariableRef_RefersTo_Base, Pred> VariableRef_RefersTo_Base_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::VariableRef_RefersTo_Base, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::UnaryOperator> UnaryOperator_kind_children() const { return Udm::ChildrenAttr< ::GOAL::UnaryOperator>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::UnaryOperator, Pred> UnaryOperator_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::UnaryOperator, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::BinaryOperator> BinaryOperator_kind_children() const { return Udm::ChildrenAttr< ::GOAL::BinaryOperator>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::BinaryOperator, Pred> BinaryOperator_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::BinaryOperator, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Plus> Plus_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Plus>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Plus, Pred> Plus_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Plus, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Divide> Divide_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Divide>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Divide, Pred> Divide_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Divide, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Times> Times_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Times>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Times, Pred> Times_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Times, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Minus> Minus_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Minus>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Minus, Pred> Minus_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Minus, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Modulus> Modulus_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Modulus>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Modulus, Pred> Modulus_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Modulus, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::CommonConnection> CommonConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::CommonConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::CommonConnection, Pred> CommonConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::CommonConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::RightHandSideObject> RightHandSideObject_kind_children() const { return Udm::ChildrenAttr< ::GOAL::RightHandSideObject>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::RightHandSideObject, Pred> RightHandSideObject_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::RightHandSideObject, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::FunctionCall> FunctionCall_kind_children() const { return Udm::ChildrenAttr< ::GOAL::FunctionCall>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::FunctionCall, Pred> FunctionCall_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::FunctionCall, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Not> Not_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Not>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Not, Pred> Not_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Not, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::File> File_kind_children() const { return Udm::ChildrenAttr< ::GOAL::File>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::File, Pred> File_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::File, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Keyboard> Keyboard_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Keyboard>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Keyboard, Pred> Keyboard_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Keyboard, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::AssignmentConnection> AssignmentConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::AssignmentConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::AssignmentConnection, Pred> AssignmentConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::AssignmentConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ConstBase> ConstBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ConstBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ConstBase, Pred> ConstBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ConstBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Brackets> Brackets_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Brackets>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Brackets, Pred> Brackets_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Brackets, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::IOBase> IOBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::IOBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::IOBase, Pred> IOBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::IOBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Input> Input_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Input>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Input, Pred> Input_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Input, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::IndexOperator> IndexOperator_kind_children() const { return Udm::ChildrenAttr< ::GOAL::IndexOperator>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::IndexOperator, Pred> IndexOperator_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::IndexOperator, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::IndexConnection> IndexConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::IndexConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::IndexConnection, Pred> IndexConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::IndexConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::NonModifyingConnection> NonModifyingConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::NonModifyingConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::NonModifyingConnection, Pred> NonModifyingConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::NonModifyingConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::InputOutput> InputOutput_kind_children() const { return Udm::ChildrenAttr< ::GOAL::InputOutput>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::InputOutput, Pred> InputOutput_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::InputOutput, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::BooleanOperators> BooleanOperators_kind_children() const { return Udm::ChildrenAttr< ::GOAL::BooleanOperators>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::BooleanOperators, Pred> BooleanOperators_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::BooleanOperators, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::And> And_kind_children() const { return Udm::ChildrenAttr< ::GOAL::And>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::And, Pred> And_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::And, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Or> Or_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Or>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Or, Pred> Or_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Or, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::OutputConnection> OutputConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::OutputConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::OutputConnection, Pred> OutputConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::OutputConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ArrayAssignmentConnection> ArrayAssignmentConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ArrayAssignmentConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ArrayAssignmentConnection, Pred> ArrayAssignmentConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ArrayAssignmentConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::AssignmentRHSConnection> AssignmentRHSConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::AssignmentRHSConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::AssignmentRHSConnection, Pred> AssignmentRHSConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::AssignmentRHSConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ArgumentConnection> ArgumentConnection_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ArgumentConnection>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ArgumentConnection, Pred> ArgumentConnection_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ArgumentConnection, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Const> Const_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Const>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Const, Pred> Const_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Const, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::VariableBase> VariableBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::VariableBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::VariableBase, Pred> VariableBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::VariableBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Variable> Variable_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Variable>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Variable, Pred> Variable_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Variable, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::MgaObject> MgaObject_kind_children() const { return Udm::ChildrenAttr< ::GOAL::MgaObject>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::MgaObject, Pred> MgaObject_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::MgaObject, Pred>(impl, Udm::NULLCHILDROLE); }

			static ::Uml::CompositionParentRole meta_Function_parent;
			Udm::ParentAttr< ::GOAL::Function> Function_parent() const { return Udm::ParentAttr< ::GOAL::Function>(impl, meta_Function_parent); }

			static ::Uml::CompositionParentRole meta_CodeAdapter_parent;
			Udm::ParentAttr< ::GOAL::CodeAdapter> CodeAdapter_parent() const { return Udm::ParentAttr< ::GOAL::CodeAdapter>(impl, meta_CodeAdapter_parent); }

			static ::Uml::CompositionParentRole meta_ConditionsAdapter_parent;
			Udm::ParentAttr< ::GOAL::ConditionsAdapter> ConditionsAdapter_parent() const { return Udm::ParentAttr< ::GOAL::ConditionsAdapter>(impl, meta_ConditionsAdapter_parent); }

			static ::Uml::CompositionParentRole meta_IndexOperator_parent;
			Udm::ParentAttr< ::GOAL::IndexOperator> IndexOperator_parent() const { return Udm::ParentAttr< ::GOAL::IndexOperator>(impl, meta_IndexOperator_parent); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
		};

		class  Brackets :  public ::GOAL::IndexOperator {
		public:
			static ::Uml::Class meta;

			Brackets() { }
			Brackets(Udm::ObjectImpl *impl) : ::GOAL::IndexOperator(impl), UDM_OBJECT(impl) { }
			Brackets(const Brackets &master) : ::GOAL::IndexOperator(master), UDM_OBJECT(master) { }
			static Brackets Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Brackets Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Brackets CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Brackets CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Brackets> Instances() { return Udm::InstantiatedAttr< ::GOAL::Brackets>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Brackets, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Brackets, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Brackets> Derived() { return Udm::DerivedAttr< ::GOAL::Brackets>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Brackets, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Brackets, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Brackets> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Brackets>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_Brackets(*this);};
		};

		class  IndexConnection :  public ::GOAL::CommonConnection {
		public:
			static ::Uml::Class meta;

			IndexConnection() { }
			IndexConnection(Udm::ObjectImpl *impl) : ::GOAL::CommonConnection(impl), UDM_OBJECT(impl) { }
			IndexConnection(const IndexConnection &master) : ::GOAL::CommonConnection(master), UDM_OBJECT(master) { }
			static IndexConnection Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static IndexConnection Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			IndexConnection CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			IndexConnection CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::IndexConnection> Instances() { return Udm::InstantiatedAttr< ::GOAL::IndexConnection>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::IndexConnection, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::IndexConnection, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::IndexConnection> Derived() { return Udm::DerivedAttr< ::GOAL::IndexConnection>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::IndexConnection, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::IndexConnection, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::IndexConnection> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::IndexConnection>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			static ::Uml::AssociationRole meta_dstIndexConnection_end_;
			Udm::AssocEndAttr< ::GOAL::IndexOperator> dstIndexConnection_end() const { return Udm::AssocEndAttr< ::GOAL::IndexOperator>(impl, meta_dstIndexConnection_end_); }

			static ::Uml::AssociationRole meta_srcIndexConnection_end_;
			Udm::AssocEndAttr< ::GOAL::VariableBase> srcIndexConnection_end() const { return Udm::AssocEndAttr< ::GOAL::VariableBase>(impl, meta_srcIndexConnection_end_); }

			virtual void Accept(Visitor &v){v.Visit_IndexConnection(*this);};
		};

		class  NonModifyingConnection :  public ::GOAL::CommonConnection {
		public:
			static ::Uml::Class meta;

			NonModifyingConnection() { }
			NonModifyingConnection(Udm::ObjectImpl *impl) : ::GOAL::CommonConnection(impl), UDM_OBJECT(impl) { }
			NonModifyingConnection(const NonModifyingConnection &master) : ::GOAL::CommonConnection(master), UDM_OBJECT(master) { }
			static NonModifyingConnection Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static NonModifyingConnection Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			NonModifyingConnection CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			NonModifyingConnection CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::NonModifyingConnection> Instances() { return Udm::InstantiatedAttr< ::GOAL::NonModifyingConnection>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::NonModifyingConnection, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::NonModifyingConnection, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::NonModifyingConnection> Derived() { return Udm::DerivedAttr< ::GOAL::NonModifyingConnection>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::NonModifyingConnection, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::NonModifyingConnection, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::NonModifyingConnection> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::NonModifyingConnection>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			static ::Uml::AssociationRole meta_dstNonModifyingConnection_end_;
			Udm::AssocEndAttr< ::GOAL::RightHandSideObject> dstNonModifyingConnection_end() const { return Udm::AssocEndAttr< ::GOAL::RightHandSideObject>(impl, meta_dstNonModifyingConnection_end_); }

			static ::Uml::AssociationRole meta_srcNonModifyingConnection_end_;
			Udm::AssocEndAttr< ::GOAL::RightHandSideObject> srcNonModifyingConnection_end() const { return Udm::AssocEndAttr< ::GOAL::RightHandSideObject>(impl, meta_srcNonModifyingConnection_end_); }

			virtual void Accept(Visitor &v){v.Visit_NonModifyingConnection(*this);};
		};

		class  InputOutput :  public ::GOAL::IOBase {
		public:
			static ::Uml::Class meta;

			InputOutput() { }
			InputOutput(Udm::ObjectImpl *impl) : ::GOAL::IOBase(impl), UDM_OBJECT(impl) { }
			InputOutput(const InputOutput &master) : ::GOAL::IOBase(master), UDM_OBJECT(master) { }
			static InputOutput Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static InputOutput Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			InputOutput CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			InputOutput CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::InputOutput> Instances() { return Udm::InstantiatedAttr< ::GOAL::InputOutput>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::InputOutput, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::InputOutput, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::InputOutput> Derived() { return Udm::DerivedAttr< ::GOAL::InputOutput>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::InputOutput, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::InputOutput, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::InputOutput> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::InputOutput>(impl);}

			static ::Uml::CompositionParentRole meta_ConditionsAdapter_parent;
			Udm::ParentAttr< ::GOAL::ConditionsAdapter> ConditionsAdapter_parent() const { return Udm::ParentAttr< ::GOAL::ConditionsAdapter>(impl, meta_ConditionsAdapter_parent); }

			static ::Uml::CompositionParentRole meta_IndexOperator_parent;
			Udm::ParentAttr< ::GOAL::IndexOperator> IndexOperator_parent() const { return Udm::ParentAttr< ::GOAL::IndexOperator>(impl, meta_IndexOperator_parent); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
		};

		class  File :  public ::GOAL::InputOutput {
		public:
			static ::Uml::Class meta;

			File() { }
			File(Udm::ObjectImpl *impl) : ::GOAL::InputOutput(impl), UDM_OBJECT(impl) { }
			File(const File &master) : ::GOAL::InputOutput(master), UDM_OBJECT(master) { }
			static File Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static File Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			File CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			File CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::File> Instances() { return Udm::InstantiatedAttr< ::GOAL::File>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::File, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::File, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::File> Derived() { return Udm::DerivedAttr< ::GOAL::File>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::File, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::File, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::File> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::File>(impl);}

			static ::Uml::Attribute meta_options;
			Udm::StringAttr options() const { return Udm::StringAttr(impl, meta_options); }

			static ::Uml::Attribute meta_filename;
			Udm::StringAttr filename() const { return Udm::StringAttr(impl, meta_filename); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_File(*this);};
		};

		class  PlusEquals :  public ::GOAL::InfixOperators {
		public:
			static ::Uml::Class meta;

			PlusEquals() { }
			PlusEquals(Udm::ObjectImpl *impl) : ::GOAL::InfixOperators(impl), UDM_OBJECT(impl) { }
			PlusEquals(const PlusEquals &master) : ::GOAL::InfixOperators(master), UDM_OBJECT(master) { }
			static PlusEquals Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static PlusEquals Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			PlusEquals CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			PlusEquals CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::PlusEquals> Instances() { return Udm::InstantiatedAttr< ::GOAL::PlusEquals>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::PlusEquals, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::PlusEquals, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::PlusEquals> Derived() { return Udm::DerivedAttr< ::GOAL::PlusEquals>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::PlusEquals, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::PlusEquals, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::PlusEquals> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::PlusEquals>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_PlusEquals(*this);};
		};

		class  DivideEquals :  public ::GOAL::InfixOperators {
		public:
			static ::Uml::Class meta;

			DivideEquals() { }
			DivideEquals(Udm::ObjectImpl *impl) : ::GOAL::InfixOperators(impl), UDM_OBJECT(impl) { }
			DivideEquals(const DivideEquals &master) : ::GOAL::InfixOperators(master), UDM_OBJECT(master) { }
			static DivideEquals Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static DivideEquals Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			DivideEquals CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			DivideEquals CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::DivideEquals> Instances() { return Udm::InstantiatedAttr< ::GOAL::DivideEquals>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::DivideEquals, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::DivideEquals, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::DivideEquals> Derived() { return Udm::DerivedAttr< ::GOAL::DivideEquals>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::DivideEquals, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::DivideEquals, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::DivideEquals> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::DivideEquals>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_DivideEquals(*this);};
		};

		class  MinusEquals :  public ::GOAL::InfixOperators {
		public:
			static ::Uml::Class meta;

			MinusEquals() { }
			MinusEquals(Udm::ObjectImpl *impl) : ::GOAL::InfixOperators(impl), UDM_OBJECT(impl) { }
			MinusEquals(const MinusEquals &master) : ::GOAL::InfixOperators(master), UDM_OBJECT(master) { }
			static MinusEquals Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static MinusEquals Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			MinusEquals CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			MinusEquals CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::MinusEquals> Instances() { return Udm::InstantiatedAttr< ::GOAL::MinusEquals>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::MinusEquals, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::MinusEquals, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::MinusEquals> Derived() { return Udm::DerivedAttr< ::GOAL::MinusEquals>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::MinusEquals, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::MinusEquals, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::MinusEquals> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::MinusEquals>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_MinusEquals(*this);};
		};

		class  TimesEquals :  public ::GOAL::InfixOperators {
		public:
			static ::Uml::Class meta;

			TimesEquals() { }
			TimesEquals(Udm::ObjectImpl *impl) : ::GOAL::InfixOperators(impl), UDM_OBJECT(impl) { }
			TimesEquals(const TimesEquals &master) : ::GOAL::InfixOperators(master), UDM_OBJECT(master) { }
			static TimesEquals Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static TimesEquals Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			TimesEquals CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			TimesEquals CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::TimesEquals> Instances() { return Udm::InstantiatedAttr< ::GOAL::TimesEquals>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::TimesEquals, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::TimesEquals, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::TimesEquals> Derived() { return Udm::DerivedAttr< ::GOAL::TimesEquals>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::TimesEquals, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::TimesEquals, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::TimesEquals> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::TimesEquals>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_TimesEquals(*this);};
		};

		class  AccumulatorBase :  public ::GOAL::MgaObject {
		public:
			static ::Uml::Class meta;

			AccumulatorBase() { }
			AccumulatorBase(Udm::ObjectImpl *impl) : ::GOAL::MgaObject(impl), UDM_OBJECT(impl) { }
			AccumulatorBase(const AccumulatorBase &master) : ::GOAL::MgaObject(master), UDM_OBJECT(master) { }
			static AccumulatorBase Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static AccumulatorBase Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			AccumulatorBase CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			AccumulatorBase CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::AccumulatorBase> Instances() { return Udm::InstantiatedAttr< ::GOAL::AccumulatorBase>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::AccumulatorBase, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::AccumulatorBase, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::AccumulatorBase> Derived() { return Udm::DerivedAttr< ::GOAL::AccumulatorBase>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::AccumulatorBase, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::AccumulatorBase, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::AccumulatorBase> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::AccumulatorBase>(impl);}

			static ::Uml::CompositionParentRole meta_Function_parent;
			Udm::ParentAttr< ::GOAL::Function> Function_parent() const { return Udm::ParentAttr< ::GOAL::Function>(impl, meta_Function_parent); }

			static ::Uml::CompositionParentRole meta_CodeAdapter_parent;
			Udm::ParentAttr< ::GOAL::CodeAdapter> CodeAdapter_parent() const { return Udm::ParentAttr< ::GOAL::CodeAdapter>(impl, meta_CodeAdapter_parent); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
		};

		class  Increment :  public ::GOAL::AccumulatorBase {
		public:
			static ::Uml::Class meta;

			Increment() { }
			Increment(Udm::ObjectImpl *impl) : ::GOAL::AccumulatorBase(impl), UDM_OBJECT(impl) { }
			Increment(const Increment &master) : ::GOAL::AccumulatorBase(master), UDM_OBJECT(master) { }
			static Increment Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Increment Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Increment CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Increment CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Increment> Instances() { return Udm::InstantiatedAttr< ::GOAL::Increment>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Increment, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Increment, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Increment> Derived() { return Udm::DerivedAttr< ::GOAL::Increment>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Increment, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Increment, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Increment> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Increment>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_Increment(*this);};
		};

		class  Decrement :  public ::GOAL::AccumulatorBase {
		public:
			static ::Uml::Class meta;

			Decrement() { }
			Decrement(Udm::ObjectImpl *impl) : ::GOAL::AccumulatorBase(impl), UDM_OBJECT(impl) { }
			Decrement(const Decrement &master) : ::GOAL::AccumulatorBase(master), UDM_OBJECT(master) { }
			static Decrement Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Decrement Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Decrement CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Decrement CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Decrement> Instances() { return Udm::InstantiatedAttr< ::GOAL::Decrement>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Decrement, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Decrement, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Decrement> Derived() { return Udm::DerivedAttr< ::GOAL::Decrement>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Decrement, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Decrement, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Decrement> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Decrement>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_Decrement(*this);};
		};

		class  BooleanOperators :  public ::GOAL::RightHandSideObject {
		public:
			static ::Uml::Class meta;

			BooleanOperators() { }
			BooleanOperators(Udm::ObjectImpl *impl) : ::GOAL::RightHandSideObject(impl), UDM_OBJECT(impl) { }
			BooleanOperators(const BooleanOperators &master) : ::GOAL::RightHandSideObject(master), UDM_OBJECT(master) { }
			static BooleanOperators Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static BooleanOperators Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			BooleanOperators CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			BooleanOperators CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::BooleanOperators> Instances() { return Udm::InstantiatedAttr< ::GOAL::BooleanOperators>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::BooleanOperators, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::BooleanOperators, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::BooleanOperators> Derived() { return Udm::DerivedAttr< ::GOAL::BooleanOperators>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::BooleanOperators, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::BooleanOperators, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::BooleanOperators> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::BooleanOperators>(impl);}

			static ::Uml::CompositionParentRole meta_CodeAdapter_parent;
			Udm::ParentAttr< ::GOAL::CodeAdapter> CodeAdapter_parent() const { return Udm::ParentAttr< ::GOAL::CodeAdapter>(impl, meta_CodeAdapter_parent); }

			static ::Uml::CompositionParentRole meta_ConditionsAdapter_parent;
			Udm::ParentAttr< ::GOAL::ConditionsAdapter> ConditionsAdapter_parent() const { return Udm::ParentAttr< ::GOAL::ConditionsAdapter>(impl, meta_ConditionsAdapter_parent); }

			static ::Uml::CompositionParentRole meta_IndexOperator_parent;
			Udm::ParentAttr< ::GOAL::IndexOperator> IndexOperator_parent() const { return Udm::ParentAttr< ::GOAL::IndexOperator>(impl, meta_IndexOperator_parent); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
		};

		class  And :  public ::GOAL::BooleanOperators {
		public:
			static ::Uml::Class meta;

			And() { }
			And(Udm::ObjectImpl *impl) : ::GOAL::BooleanOperators(impl), UDM_OBJECT(impl) { }
			And(const And &master) : ::GOAL::BooleanOperators(master), UDM_OBJECT(master) { }
			static And Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static And Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			And CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			And CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::And> Instances() { return Udm::InstantiatedAttr< ::GOAL::And>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::And, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::And, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::And> Derived() { return Udm::DerivedAttr< ::GOAL::And>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::And, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::And, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::And> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::And>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_And(*this);};
		};

		class  Or :  public ::GOAL::BooleanOperators {
		public:
			static ::Uml::Class meta;

			Or() { }
			Or(Udm::ObjectImpl *impl) : ::GOAL::BooleanOperators(impl), UDM_OBJECT(impl) { }
			Or(const Or &master) : ::GOAL::BooleanOperators(master), UDM_OBJECT(master) { }
			static Or Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Or Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Or CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Or CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Or> Instances() { return Udm::InstantiatedAttr< ::GOAL::Or>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Or, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Or, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Or> Derived() { return Udm::DerivedAttr< ::GOAL::Or>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Or, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Or, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Or> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Or>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_Or(*this);};
		};

		class  OutputConnection :  public ::GOAL::CommonConnection {
		public:
			static ::Uml::Class meta;

			OutputConnection() { }
			OutputConnection(Udm::ObjectImpl *impl) : ::GOAL::CommonConnection(impl), UDM_OBJECT(impl) { }
			OutputConnection(const OutputConnection &master) : ::GOAL::CommonConnection(master), UDM_OBJECT(master) { }
			static OutputConnection Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static OutputConnection Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			OutputConnection CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			OutputConnection CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::OutputConnection> Instances() { return Udm::InstantiatedAttr< ::GOAL::OutputConnection>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::OutputConnection, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::OutputConnection, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::OutputConnection> Derived() { return Udm::DerivedAttr< ::GOAL::OutputConnection>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::OutputConnection, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::OutputConnection, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::OutputConnection> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::OutputConnection>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			static ::Uml::AssociationRole meta_srcOutputConnection_end_;
			Udm::AssocEndAttr< ::GOAL::InfixOperators> srcOutputConnection_end() const { return Udm::AssocEndAttr< ::GOAL::InfixOperators>(impl, meta_srcOutputConnection_end_); }

			static ::Uml::AssociationRole meta_dstOutputConnection_end_;
			Udm::AssocEndAttr< ::GOAL::Output> dstOutputConnection_end() const { return Udm::AssocEndAttr< ::GOAL::Output>(impl, meta_dstOutputConnection_end_); }

			virtual void Accept(Visitor &v){v.Visit_OutputConnection(*this);};
		};

		class  ArrayAssignmentConnection :  public ::GOAL::CommonConnection {
		public:
			static ::Uml::Class meta;

			ArrayAssignmentConnection() { }
			ArrayAssignmentConnection(Udm::ObjectImpl *impl) : ::GOAL::CommonConnection(impl), UDM_OBJECT(impl) { }
			ArrayAssignmentConnection(const ArrayAssignmentConnection &master) : ::GOAL::CommonConnection(master), UDM_OBJECT(master) { }
			static ArrayAssignmentConnection Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static ArrayAssignmentConnection Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			ArrayAssignmentConnection CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			ArrayAssignmentConnection CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::ArrayAssignmentConnection> Instances() { return Udm::InstantiatedAttr< ::GOAL::ArrayAssignmentConnection>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::ArrayAssignmentConnection, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::ArrayAssignmentConnection, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::ArrayAssignmentConnection> Derived() { return Udm::DerivedAttr< ::GOAL::ArrayAssignmentConnection>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::ArrayAssignmentConnection, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::ArrayAssignmentConnection, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::ArrayAssignmentConnection> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::ArrayAssignmentConnection>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			static ::Uml::AssociationRole meta_srcArrayAssignmentConnection_end_;
			Udm::AssocEndAttr< ::GOAL::InfixOperators> srcArrayAssignmentConnection_end() const { return Udm::AssocEndAttr< ::GOAL::InfixOperators>(impl, meta_srcArrayAssignmentConnection_end_); }

			static ::Uml::AssociationRole meta_dstArrayAssignmentConnection_end_;
			Udm::AssocEndAttr< ::GOAL::IndexOperator> dstArrayAssignmentConnection_end() const { return Udm::AssocEndAttr< ::GOAL::IndexOperator>(impl, meta_dstArrayAssignmentConnection_end_); }

			virtual void Accept(Visitor &v){v.Visit_ArrayAssignmentConnection(*this);};
		};

		class  AssignmentRHSConnection :  public ::GOAL::CommonConnection {
		public:
			static ::Uml::Class meta;

			AssignmentRHSConnection() { }
			AssignmentRHSConnection(Udm::ObjectImpl *impl) : ::GOAL::CommonConnection(impl), UDM_OBJECT(impl) { }
			AssignmentRHSConnection(const AssignmentRHSConnection &master) : ::GOAL::CommonConnection(master), UDM_OBJECT(master) { }
			static AssignmentRHSConnection Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static AssignmentRHSConnection Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			AssignmentRHSConnection CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			AssignmentRHSConnection CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::AssignmentRHSConnection> Instances() { return Udm::InstantiatedAttr< ::GOAL::AssignmentRHSConnection>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::AssignmentRHSConnection, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::AssignmentRHSConnection, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::AssignmentRHSConnection> Derived() { return Udm::DerivedAttr< ::GOAL::AssignmentRHSConnection>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::AssignmentRHSConnection, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::AssignmentRHSConnection, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::AssignmentRHSConnection> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::AssignmentRHSConnection>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			static ::Uml::AssociationRole meta_srcAssignmentRHSConnection_end_;
			Udm::AssocEndAttr< ::GOAL::RightHandSideObject> srcAssignmentRHSConnection_end() const { return Udm::AssocEndAttr< ::GOAL::RightHandSideObject>(impl, meta_srcAssignmentRHSConnection_end_); }

			static ::Uml::AssociationRole meta_dstAssignmentRHSConnection_end_;
			Udm::AssocEndAttr< ::GOAL::InfixOperators> dstAssignmentRHSConnection_end() const { return Udm::AssocEndAttr< ::GOAL::InfixOperators>(impl, meta_dstAssignmentRHSConnection_end_); }

			virtual void Accept(Visitor &v){v.Visit_AssignmentRHSConnection(*this);};
		};

		class  ArgumentConnection :  public ::GOAL::CommonConnection {
		public:
			static ::Uml::Class meta;

			ArgumentConnection() { }
			ArgumentConnection(Udm::ObjectImpl *impl) : ::GOAL::CommonConnection(impl), UDM_OBJECT(impl) { }
			ArgumentConnection(const ArgumentConnection &master) : ::GOAL::CommonConnection(master), UDM_OBJECT(master) { }
			static ArgumentConnection Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static ArgumentConnection Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			ArgumentConnection CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			ArgumentConnection CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::ArgumentConnection> Instances() { return Udm::InstantiatedAttr< ::GOAL::ArgumentConnection>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::ArgumentConnection, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::ArgumentConnection, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::ArgumentConnection> Derived() { return Udm::DerivedAttr< ::GOAL::ArgumentConnection>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::ArgumentConnection, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::ArgumentConnection, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::ArgumentConnection> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::ArgumentConnection>(impl);}

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			static ::Uml::AssociationRole meta_srcOutputConnection_end_;
			Udm::AssocEndAttr< ::GOAL::RightHandSideObject> srcOutputConnection_end() const { return Udm::AssocEndAttr< ::GOAL::RightHandSideObject>(impl, meta_srcOutputConnection_end_); }

			static ::Uml::AssociationRole meta_dstOutputConnection_end_;
			Udm::AssocEndAttr< ::GOAL::Argument> dstOutputConnection_end() const { return Udm::AssocEndAttr< ::GOAL::Argument>(impl, meta_dstOutputConnection_end_); }

			virtual void Accept(Visitor &v){v.Visit_ArgumentConnection(*this);};
		};

		class  ControlBase :  public ::GOAL::MgaObject {
		public:
			static ::Uml::Class meta;

			ControlBase() { }
			ControlBase(Udm::ObjectImpl *impl) : ::GOAL::MgaObject(impl), UDM_OBJECT(impl) { }
			ControlBase(const ControlBase &master) : ::GOAL::MgaObject(master), UDM_OBJECT(master) { }
			static ControlBase Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static ControlBase Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			ControlBase CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			ControlBase CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::ControlBase> Instances() { return Udm::InstantiatedAttr< ::GOAL::ControlBase>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::ControlBase, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::ControlBase, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::ControlBase> Derived() { return Udm::DerivedAttr< ::GOAL::ControlBase>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::ControlBase, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::ControlBase, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::ControlBase> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::ControlBase>(impl);}

			static ::Uml::CompositionParentRole meta_Function_parent;
			Udm::ParentAttr< ::GOAL::Function> Function_parent() const { return Udm::ParentAttr< ::GOAL::Function>(impl, meta_Function_parent); }

			static ::Uml::CompositionParentRole meta_CodeAdapter_parent;
			Udm::ParentAttr< ::GOAL::CodeAdapter> CodeAdapter_parent() const { return Udm::ParentAttr< ::GOAL::CodeAdapter>(impl, meta_CodeAdapter_parent); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
		};

		class  For :  public ::GOAL::ControlBase {
		public:
			static ::Uml::Class meta;

			For() { }
			For(Udm::ObjectImpl *impl) : ::GOAL::ControlBase(impl), UDM_OBJECT(impl) { }
			For(const For &master) : ::GOAL::ControlBase(master), UDM_OBJECT(master) { }
			static For Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static For Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			For CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			For CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::For> Instances() { return Udm::InstantiatedAttr< ::GOAL::For>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::For, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::For, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::For> Derived() { return Udm::DerivedAttr< ::GOAL::For>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::For, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::For, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::For> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::For>(impl);}

			static ::Uml::CompositionChildRole meta_CodeAdapter_children;
			Udm::ChildrenAttr< ::GOAL::CodeAdapter> CodeAdapter_children() const { return Udm::ChildrenAttr< ::GOAL::CodeAdapter>(impl, meta_CodeAdapter_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::CodeAdapter, Pred> CodeAdapter_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::CodeAdapter, Pred>(impl, meta_CodeAdapter_children); }

			static ::Uml::CompositionChildRole meta_ConditionsAdapter_children;
			Udm::ChildrenAttr< ::GOAL::ConditionsAdapter> ConditionsAdapter_children() const { return Udm::ChildrenAttr< ::GOAL::ConditionsAdapter>(impl, meta_ConditionsAdapter_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::ConditionsAdapter, Pred> ConditionsAdapter_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ConditionsAdapter, Pred>(impl, meta_ConditionsAdapter_children); }

			Udm::ChildrenAttr< ::GOAL::Adapter> Adapter_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Adapter>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Adapter, Pred> Adapter_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Adapter, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::CodeAdapter> CodeAdapter_kind_children() const { return Udm::ChildrenAttr< ::GOAL::CodeAdapter>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::CodeAdapter, Pred> CodeAdapter_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::CodeAdapter, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ConditionsAdapter> ConditionsAdapter_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ConditionsAdapter>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ConditionsAdapter, Pred> ConditionsAdapter_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ConditionsAdapter, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::MgaObject> MgaObject_kind_children() const { return Udm::ChildrenAttr< ::GOAL::MgaObject>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::MgaObject, Pred> MgaObject_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::MgaObject, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_For(*this);};
		};

		class  While :  public ::GOAL::ControlBase {
		public:
			static ::Uml::Class meta;

			While() { }
			While(Udm::ObjectImpl *impl) : ::GOAL::ControlBase(impl), UDM_OBJECT(impl) { }
			While(const While &master) : ::GOAL::ControlBase(master), UDM_OBJECT(master) { }
			static While Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static While Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			While CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			While CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::While> Instances() { return Udm::InstantiatedAttr< ::GOAL::While>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::While, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::While, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::While> Derived() { return Udm::DerivedAttr< ::GOAL::While>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::While, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::While, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::While> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::While>(impl);}

			static ::Uml::CompositionChildRole meta_ConditionsAdapter_children;
			Udm::ChildrenAttr< ::GOAL::ConditionsAdapter> ConditionsAdapter_children() const { return Udm::ChildrenAttr< ::GOAL::ConditionsAdapter>(impl, meta_ConditionsAdapter_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::ConditionsAdapter, Pred> ConditionsAdapter_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ConditionsAdapter, Pred>(impl, meta_ConditionsAdapter_children); }

			static ::Uml::CompositionChildRole meta_CodeAdapter_children;
			Udm::ChildrenAttr< ::GOAL::CodeAdapter> CodeAdapter_children() const { return Udm::ChildrenAttr< ::GOAL::CodeAdapter>(impl, meta_CodeAdapter_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::CodeAdapter, Pred> CodeAdapter_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::CodeAdapter, Pred>(impl, meta_CodeAdapter_children); }

			Udm::ChildrenAttr< ::GOAL::Adapter> Adapter_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Adapter>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Adapter, Pred> Adapter_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Adapter, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::CodeAdapter> CodeAdapter_kind_children() const { return Udm::ChildrenAttr< ::GOAL::CodeAdapter>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::CodeAdapter, Pred> CodeAdapter_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::CodeAdapter, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ConditionsAdapter> ConditionsAdapter_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ConditionsAdapter>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ConditionsAdapter, Pred> ConditionsAdapter_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ConditionsAdapter, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::MgaObject> MgaObject_kind_children() const { return Udm::ChildrenAttr< ::GOAL::MgaObject>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::MgaObject, Pred> MgaObject_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::MgaObject, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_While(*this);};
		};

		class  If :  public ::GOAL::ControlBase {
		public:
			static ::Uml::Class meta;

			If() { }
			If(Udm::ObjectImpl *impl) : ::GOAL::ControlBase(impl), UDM_OBJECT(impl) { }
			If(const If &master) : ::GOAL::ControlBase(master), UDM_OBJECT(master) { }
			static If Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static If Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			If CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			If CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::If> Instances() { return Udm::InstantiatedAttr< ::GOAL::If>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::If, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::If, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::If> Derived() { return Udm::DerivedAttr< ::GOAL::If>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::If, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::If, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::If> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::If>(impl);}

			static ::Uml::CompositionChildRole meta_CodeAdapter_children;
			Udm::ChildrenAttr< ::GOAL::CodeAdapter> CodeAdapter_children() const { return Udm::ChildrenAttr< ::GOAL::CodeAdapter>(impl, meta_CodeAdapter_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::CodeAdapter, Pred> CodeAdapter_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::CodeAdapter, Pred>(impl, meta_CodeAdapter_children); }

			static ::Uml::CompositionChildRole meta_ConditionsAdapter_children;
			Udm::ChildrenAttr< ::GOAL::ConditionsAdapter> ConditionsAdapter_children() const { return Udm::ChildrenAttr< ::GOAL::ConditionsAdapter>(impl, meta_ConditionsAdapter_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::ConditionsAdapter, Pred> ConditionsAdapter_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ConditionsAdapter, Pred>(impl, meta_ConditionsAdapter_children); }

			Udm::ChildrenAttr< ::GOAL::Adapter> Adapter_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Adapter>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Adapter, Pred> Adapter_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Adapter, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::CodeAdapter> CodeAdapter_kind_children() const { return Udm::ChildrenAttr< ::GOAL::CodeAdapter>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::CodeAdapter, Pred> CodeAdapter_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::CodeAdapter, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ConditionsAdapter> ConditionsAdapter_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ConditionsAdapter>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ConditionsAdapter, Pred> ConditionsAdapter_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ConditionsAdapter, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::MgaObject> MgaObject_kind_children() const { return Udm::ChildrenAttr< ::GOAL::MgaObject>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::MgaObject, Pred> MgaObject_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::MgaObject, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_If(*this);};
		};

		class  Array :  public ::GOAL::ComposableBase {
		public:
			static ::Uml::Class meta;

			Array() { }
			Array(Udm::ObjectImpl *impl) : ::GOAL::ComposableBase(impl), UDM_OBJECT(impl) { }
			Array(const Array &master) : ::GOAL::ComposableBase(master), UDM_OBJECT(master) { }
			static Array Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Array Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Array CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Array CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Array> Instances() { return Udm::InstantiatedAttr< ::GOAL::Array>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Array, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Array, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Array> Derived() { return Udm::DerivedAttr< ::GOAL::Array>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Array, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Array, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Array> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Array>(impl);}

			static ::Uml::CompositionChildRole meta_ComposableBase_children;
			Udm::ChildrenAttr< ::GOAL::ComposableBase> ComposableBase_children() const { return Udm::ChildrenAttr< ::GOAL::ComposableBase>(impl, meta_ComposableBase_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred> ComposableBase_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred>(impl, meta_ComposableBase_children); }

			static ::Uml::CompositionChildRole meta_Const_children;
			Udm::ChildrenAttr< ::GOAL::Const> Const_children() const { return Udm::ChildrenAttr< ::GOAL::Const>(impl, meta_Const_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::Const, Pred> Const_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Const, Pred>(impl, meta_Const_children); }

			Udm::ChildrenAttr< ::GOAL::RightHandSideObject> RightHandSideObject_kind_children() const { return Udm::ChildrenAttr< ::GOAL::RightHandSideObject>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::RightHandSideObject, Pred> RightHandSideObject_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::RightHandSideObject, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ConstBase> ConstBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ConstBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ConstBase, Pred> ConstBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ConstBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ComposableBase> ComposableBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ComposableBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred> ComposableBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Array> Array_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Array>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Array, Pred> Array_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Array, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Const> Const_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Const>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Const, Pred> Const_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Const, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ClassRef> ClassRef_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ClassRef>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ClassRef, Pred> ClassRef_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ClassRef, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::MgaObject> MgaObject_kind_children() const { return Udm::ChildrenAttr< ::GOAL::MgaObject>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::MgaObject, Pred> MgaObject_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::MgaObject, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_Array(*this);};
		};

		class  Return :  public ::GOAL::VariableRef_RefersTo_Base, public ::GOAL::MgaObject {
		public:
			static ::Uml::Class meta;

			Return() { }
			Return(Udm::ObjectImpl *impl) : ::GOAL::VariableRef_RefersTo_Base(impl),::GOAL::MgaObject(impl), UDM_OBJECT(impl) { }
			Return(const Return &master) : ::GOAL::VariableRef_RefersTo_Base(master),::GOAL::MgaObject(master), UDM_OBJECT(master) { }
			static Return Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Return Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Return CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Return CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Return> Instances() { return Udm::InstantiatedAttr< ::GOAL::Return>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Return, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Return, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Return> Derived() { return Udm::DerivedAttr< ::GOAL::Return>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Return, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Return, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Return> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Return>(impl);}

			static ::Uml::CompositionChildRole meta_ComposableBase_children;
			Udm::ChildrenAttr< ::GOAL::ComposableBase> ComposableBase_children() const { return Udm::ChildrenAttr< ::GOAL::ComposableBase>(impl, meta_ComposableBase_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred> ComposableBase_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred>(impl, meta_ComposableBase_children); }

			Udm::ChildrenAttr< ::GOAL::ComposableBase> ComposableBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ComposableBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred> ComposableBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Array> Array_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Array>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Array, Pred> Array_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Array, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ClassRef> ClassRef_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ClassRef>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ClassRef, Pred> ClassRef_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ClassRef, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::MgaObject> MgaObject_kind_children() const { return Udm::ChildrenAttr< ::GOAL::MgaObject>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::MgaObject, Pred> MgaObject_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::MgaObject, Pred>(impl, Udm::NULLCHILDROLE); }

			static ::Uml::CompositionParentRole meta_Function_parent;
			Udm::ParentAttr< ::GOAL::Function> Function_parent() const { return Udm::ParentAttr< ::GOAL::Function>(impl, meta_Function_parent); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_Return(*this);};
		};

		class  Argument :  public ::GOAL::VariableRef_RefersTo_Base, public ::GOAL::MgaObject {
		public:
			static ::Uml::Class meta;

			Argument() { }
			Argument(Udm::ObjectImpl *impl) : ::GOAL::VariableRef_RefersTo_Base(impl),::GOAL::MgaObject(impl), UDM_OBJECT(impl) { }
			Argument(const Argument &master) : ::GOAL::VariableRef_RefersTo_Base(master),::GOAL::MgaObject(master), UDM_OBJECT(master) { }
			static Argument Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Argument Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Argument CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Argument CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Argument> Instances() { return Udm::InstantiatedAttr< ::GOAL::Argument>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Argument, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Argument, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Argument> Derived() { return Udm::DerivedAttr< ::GOAL::Argument>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Argument, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Argument, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Argument> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Argument>(impl);}

			static ::Uml::AssociationRole meta_srcOutputConnection;
			static ::Uml::AssociationRole meta_srcOutputConnection_rev;
			Udm::AClassAssocAttr< ::GOAL::ArgumentConnection, ::GOAL::RightHandSideObject> srcOutputConnection() const { return Udm::AClassAssocAttr< ::GOAL::ArgumentConnection, ::GOAL::RightHandSideObject>(impl, meta_srcOutputConnection, meta_srcOutputConnection_rev); }
			template<class Pred> Udm::AClassAssocAttr< ::GOAL::ArgumentConnection, ::GOAL::RightHandSideObject, Pred> srcOutputConnection_sorted(const Pred &) const { return Udm::AClassAssocAttr< ::GOAL::ArgumentConnection, ::GOAL::RightHandSideObject, Pred>(impl, meta_srcOutputConnection, meta_srcOutputConnection_rev); }

			static ::Uml::CompositionChildRole meta_ComposableBase_children;
			Udm::ChildrenAttr< ::GOAL::ComposableBase> ComposableBase_children() const { return Udm::ChildrenAttr< ::GOAL::ComposableBase>(impl, meta_ComposableBase_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred> ComposableBase_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred>(impl, meta_ComposableBase_children); }

			Udm::ChildrenAttr< ::GOAL::ComposableBase> ComposableBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ComposableBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred> ComposableBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Array> Array_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Array>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Array, Pred> Array_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Array, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ClassRef> ClassRef_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ClassRef>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ClassRef, Pred> ClassRef_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ClassRef, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::MgaObject> MgaObject_kind_children() const { return Udm::ChildrenAttr< ::GOAL::MgaObject>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::MgaObject, Pred> MgaObject_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::MgaObject, Pred>(impl, Udm::NULLCHILDROLE); }

			static ::Uml::CompositionParentRole meta_Function_parent;
			Udm::ParentAttr< ::GOAL::Function> Function_parent() const { return Udm::ParentAttr< ::GOAL::Function>(impl, meta_Function_parent); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_Argument(*this);};
		};

		class  Const :  public ::GOAL::ConstBase {
		public:
			static ::Uml::Class meta;

			Const() { }
			Const(Udm::ObjectImpl *impl) : ::GOAL::ConstBase(impl), UDM_OBJECT(impl) { }
			Const(const Const &master) : ::GOAL::ConstBase(master), UDM_OBJECT(master) { }
			static Const Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Const Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Const CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Const CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Const> Instances() { return Udm::InstantiatedAttr< ::GOAL::Const>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Const, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Const, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Const> Derived() { return Udm::DerivedAttr< ::GOAL::Const>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Const, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Const, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Const> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Const>(impl);}

			static ::Uml::CompositionChildRole meta_ComposableBase_children;
			Udm::ChildrenAttr< ::GOAL::ComposableBase> ComposableBase_children() const { return Udm::ChildrenAttr< ::GOAL::ComposableBase>(impl, meta_ComposableBase_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred> ComposableBase_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred>(impl, meta_ComposableBase_children); }

			Udm::ChildrenAttr< ::GOAL::ComposableBase> ComposableBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ComposableBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred> ComposableBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Array> Array_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Array>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Array, Pred> Array_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Array, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ClassRef> ClassRef_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ClassRef>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ClassRef, Pred> ClassRef_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ClassRef, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::MgaObject> MgaObject_kind_children() const { return Udm::ChildrenAttr< ::GOAL::MgaObject>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::MgaObject, Pred> MgaObject_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::MgaObject, Pred>(impl, Udm::NULLCHILDROLE); }

			static ::Uml::CompositionParentRole meta_Array_parent;
			Udm::ParentAttr< ::GOAL::Array> Array_parent() const { return Udm::ParentAttr< ::GOAL::Array>(impl, meta_Array_parent); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_Const(*this);};
		};

		class  VariableBase :  public ::GOAL::RightHandSideObject {
		public:
			static ::Uml::Class meta;

			VariableBase() { }
			VariableBase(Udm::ObjectImpl *impl) : ::GOAL::RightHandSideObject(impl), UDM_OBJECT(impl) { }
			VariableBase(const VariableBase &master) : ::GOAL::RightHandSideObject(master), UDM_OBJECT(master) { }
			static VariableBase Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static VariableBase Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			VariableBase CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			VariableBase CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::VariableBase> Instances() { return Udm::InstantiatedAttr< ::GOAL::VariableBase>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::VariableBase, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::VariableBase, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::VariableBase> Derived() { return Udm::DerivedAttr< ::GOAL::VariableBase>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::VariableBase, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::VariableBase, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::VariableBase> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::VariableBase>(impl);}

			static ::Uml::AssociationRole meta_srcAssignmentConnection;
			static ::Uml::AssociationRole meta_srcAssignmentConnection_rev;
			Udm::AClassAssocAttr< ::GOAL::AssignmentConnection, ::GOAL::InfixOperators> srcAssignmentConnection() const { return Udm::AClassAssocAttr< ::GOAL::AssignmentConnection, ::GOAL::InfixOperators>(impl, meta_srcAssignmentConnection, meta_srcAssignmentConnection_rev); }
			template<class Pred> Udm::AClassAssocAttr< ::GOAL::AssignmentConnection, ::GOAL::InfixOperators, Pred> srcAssignmentConnection_sorted(const Pred &) const { return Udm::AClassAssocAttr< ::GOAL::AssignmentConnection, ::GOAL::InfixOperators, Pred>(impl, meta_srcAssignmentConnection, meta_srcAssignmentConnection_rev); }

			static ::Uml::AssociationRole meta_dstIndexConnection;
			static ::Uml::AssociationRole meta_dstIndexConnection_rev;
			Udm::AClassAssocAttr< ::GOAL::IndexConnection, ::GOAL::IndexOperator> dstIndexConnection() const { return Udm::AClassAssocAttr< ::GOAL::IndexConnection, ::GOAL::IndexOperator>(impl, meta_dstIndexConnection, meta_dstIndexConnection_rev); }
			template<class Pred> Udm::AClassAssocAttr< ::GOAL::IndexConnection, ::GOAL::IndexOperator, Pred> dstIndexConnection_sorted(const Pred &) const { return Udm::AClassAssocAttr< ::GOAL::IndexConnection, ::GOAL::IndexOperator, Pred>(impl, meta_dstIndexConnection, meta_dstIndexConnection_rev); }

			static ::Uml::CompositionChildRole meta_VariableRef_children;
			Udm::ChildrenAttr< ::GOAL::VariableRef> VariableRef_children() const { return Udm::ChildrenAttr< ::GOAL::VariableRef>(impl, meta_VariableRef_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::VariableRef, Pred> VariableRef_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::VariableRef, Pred>(impl, meta_VariableRef_children); }

			static ::Uml::CompositionChildRole meta_ComposableBase_children;
			Udm::ChildrenAttr< ::GOAL::ComposableBase> ComposableBase_children() const { return Udm::ChildrenAttr< ::GOAL::ComposableBase>(impl, meta_ComposableBase_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred> ComposableBase_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred>(impl, meta_ComposableBase_children); }

			Udm::ChildrenAttr< ::GOAL::VariableRef> VariableRef_kind_children() const { return Udm::ChildrenAttr< ::GOAL::VariableRef>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::VariableRef, Pred> VariableRef_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::VariableRef, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ComposableBase> ComposableBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ComposableBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred> ComposableBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Array> Array_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Array>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Array, Pred> Array_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Array, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ClassRef> ClassRef_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ClassRef>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ClassRef, Pred> ClassRef_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ClassRef, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::MgaObject> MgaObject_kind_children() const { return Udm::ChildrenAttr< ::GOAL::MgaObject>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::MgaObject, Pred> MgaObject_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::MgaObject, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ParentAttr<Udm::Object> parent() const { return Udm::ParentAttr<Udm::Object>(impl, Udm::NULLPARENTROLE); }
		};

		class  ClassMember :  public ::GOAL::MgaObject {
		public:
			static ::Uml::Class meta;

			ClassMember() { }
			ClassMember(Udm::ObjectImpl *impl) : ::GOAL::MgaObject(impl), UDM_OBJECT(impl) { }
			ClassMember(const ClassMember &master) : ::GOAL::MgaObject(master), UDM_OBJECT(master) { }
			static ClassMember Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static ClassMember Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			ClassMember CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			ClassMember CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::ClassMember> Instances() { return Udm::InstantiatedAttr< ::GOAL::ClassMember>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::ClassMember, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::ClassMember, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::ClassMember> Derived() { return Udm::DerivedAttr< ::GOAL::ClassMember>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::ClassMember, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::ClassMember, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::ClassMember> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::ClassMember>(impl);}

			static ::Uml::CompositionChildRole meta_ComposableBase_children;
			Udm::ChildrenAttr< ::GOAL::ComposableBase> ComposableBase_children() const { return Udm::ChildrenAttr< ::GOAL::ComposableBase>(impl, meta_ComposableBase_children); }
			template <class Pred> Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred> ComposableBase_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred>(impl, meta_ComposableBase_children); }

			Udm::ChildrenAttr< ::GOAL::ComposableBase> ComposableBase_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ComposableBase>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred> ComposableBase_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ComposableBase, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::Array> Array_kind_children() const { return Udm::ChildrenAttr< ::GOAL::Array>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::Array, Pred> Array_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::Array, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::ClassRef> ClassRef_kind_children() const { return Udm::ChildrenAttr< ::GOAL::ClassRef>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::ClassRef, Pred> ClassRef_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::ClassRef, Pred>(impl, Udm::NULLCHILDROLE); }

			Udm::ChildrenAttr< ::GOAL::MgaObject> MgaObject_kind_children() const { return Udm::ChildrenAttr< ::GOAL::MgaObject>(impl, Udm::NULLCHILDROLE); }
			template<class Pred> Udm::ChildrenAttr< ::GOAL::MgaObject, Pred> MgaObject_kind_children_sorted(const Pred &) const { return Udm::ChildrenAttr< ::GOAL::MgaObject, Pred>(impl, Udm::NULLCHILDROLE); }

			static ::Uml::CompositionParentRole meta_ClassAdapter_parent;
			Udm::ParentAttr< ::GOAL::ClassAdapter> ClassAdapter_parent() const { return Udm::ParentAttr< ::GOAL::ClassAdapter>(impl, meta_ClassAdapter_parent); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_ClassMember(*this);};
		};

		class  ClassRef :  public ::GOAL::ComposableBase {
		public:
			static ::Uml::Class meta;

			ClassRef() { }
			ClassRef(Udm::ObjectImpl *impl) : ::GOAL::ComposableBase(impl), UDM_OBJECT(impl) { }
			ClassRef(const ClassRef &master) : ::GOAL::ComposableBase(master), UDM_OBJECT(master) { }
			static ClassRef Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static ClassRef Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			ClassRef CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			ClassRef CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::ClassRef> Instances() { return Udm::InstantiatedAttr< ::GOAL::ClassRef>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::ClassRef, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::ClassRef, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::ClassRef> Derived() { return Udm::DerivedAttr< ::GOAL::ClassRef>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::ClassRef, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::ClassRef, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::ClassRef> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::ClassRef>(impl);}

			static ::Uml::AssociationRole meta_ref;
			Udm::PointerAttr< ::GOAL::Class> ref() const { return Udm::PointerAttr< ::GOAL::Class>(impl, meta_ref); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_ClassRef(*this);};
		};

		class  Variable :  public ::GOAL::VariableRef_RefersTo_Base, public ::GOAL::VariableBase {
		public:
			static ::Uml::Class meta;

			Variable() { }
			Variable(Udm::ObjectImpl *impl) : ::GOAL::VariableRef_RefersTo_Base(impl),::GOAL::VariableBase(impl), UDM_OBJECT(impl) { }
			Variable(const Variable &master) : ::GOAL::VariableRef_RefersTo_Base(master),::GOAL::VariableBase(master), UDM_OBJECT(master) { }
			static Variable Cast(const Udm::Object &a) { return __Cast(a, meta); }

			static Variable Create(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role); }

			Variable CreateInstance(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl); }

			Variable CreateDerived(const Udm::Object &parent, const ::Uml::CompositionChildRole &role = Udm::NULLCHILDROLE) { return __Create(meta, parent, role, impl, true); }

			Udm::InstantiatedAttr< ::GOAL::Variable> Instances() { return Udm::InstantiatedAttr< ::GOAL::Variable>(impl);}
			template <class Pred> Udm::InstantiatedAttr< ::GOAL::Variable, Pred> Instances_sorted(const Pred &) { return Udm::InstantiatedAttr< ::GOAL::Variable, Pred>(impl);}

			Udm::DerivedAttr< ::GOAL::Variable> Derived() { return Udm::DerivedAttr< ::GOAL::Variable>(impl);}
			template <class Pred> Udm::DerivedAttr< ::GOAL::Variable, Pred> Derived_sorted(const Pred &) { return Udm::DerivedAttr< ::GOAL::Variable, Pred>(impl);}

			Udm::ArchetypeAttr< ::GOAL::Variable> Archetype() const { return Udm::ArchetypeAttr< ::GOAL::Variable>(impl);}

			static ::Uml::CompositionParentRole meta_Function_parent;
			Udm::ParentAttr< ::GOAL::Function> Function_parent() const { return Udm::ParentAttr< ::GOAL::Function>(impl, meta_Function_parent); }

			static ::Uml::CompositionParentRole meta_CodeAdapter_parent;
			Udm::ParentAttr< ::GOAL::CodeAdapter> CodeAdapter_parent() const { return Udm::ParentAttr< ::GOAL::CodeAdapter>(impl, meta_CodeAdapter_parent); }

			static ::Uml::CompositionParentRole meta_ConditionsAdapter_parent;
			Udm::ParentAttr< ::GOAL::ConditionsAdapter> ConditionsAdapter_parent() const { return Udm::ParentAttr< ::GOAL::ConditionsAdapter>(impl, meta_ConditionsAdapter_parent); }

			static ::Uml::CompositionParentRole meta_IndexOperator_parent;
			Udm::ParentAttr< ::GOAL::IndexOperator> IndexOperator_parent() const { return Udm::ParentAttr< ::GOAL::IndexOperator>(impl, meta_IndexOperator_parent); }

			Udm::ParentAttr< ::GOAL::MgaObject> parent() const { return Udm::ParentAttr< ::GOAL::MgaObject>(impl, Udm::NULLPARENTROLE); }
			virtual void Accept(Visitor &v){v.Visit_Variable(*this);};
		};



}

#endif //MOBIES_GOAL_H
